Сохранение дат в матрице (необходимо указать происхождение) с помощью r

Я пишу свою бакалаврскую диссертацию и пока не имею большого опыта работы с r. Моя проблема в том, что мои даты, которые я сделал с помощью этих команд:

t<-strptime(x, "%d.%m.%Y %H.%M") 

больше не работают, когда я сохраняю их в матрице с другой информацией по этим конкретным датам.

Я немного сбит с толку, потому что он отлично работает, когда я не помещаю их в такую ​​матрицу t[1:10]

Но это происходит, как только я пытаюсь сохранить их в матрице

matrix1<-matrix(c(t,v2,v3,v4),nrow=length(v2))

Fehler in as.POSIXct.numeric(X[[i]], ...) : 'origin' muss angegeben werden

Это немецкий язык, но это означает, что необходимо указать происхождение.

Есть идеи, что мне делать, чтобы это исправить? Я немного расстроен :)


person Felix Frölich    schedule 09.05.2016    source источник


Ответы (2)


Роланд прав. В матрице не может быть объектов Posixlt. Что вы можете сделать, так это сохранить эти даты как числовые метки времени в матрице и преобразовать их обратно в даты при доступе к Преобразованию в числовые метки времени:

>date<- as.numeric(as.POSIXct("2014-02-16 2:13:46 UTC",origin="01-01-1970"))
>date
[1] 1392545626

Затем сохраните эти временные метки в матрице, как и вы, и, чтобы преобразовать ее обратно в дату, снова используйте указанную выше команду, не преобразовывая ее в числовое значение.

person NinComPoop    schedule 09.05.2016

t (кстати, ужасное имя, его легко спутать с функцией t) - это объект POSIXlt, который внутри является списком. Сначала вы должны проверить, что возвращает c(t,v2,v3,v4) (я не знаю, как определяются v2 и т. Д.).

Затем мы можем заглянуть в документацию в help("matrix"):

данные
необязательный вектор данных (включая вектор списка или выражения). Неатомарные классифицированные объекты R приводятся в действие as.vector, и все атрибуты отбрасываются.

Важный бит - «все атрибуты отброшены». Вот что вы получите, если отбросите атрибуты (включая атрибут class) объекта POSIXlt:

x <- strptime(c("2016-05-09 12:00:00", "2016-05-09 13:00:00"), format = "%Y-%m-%d %H:%M:%S")
attributes(x) <- NULL
print(x)
# [[1]]
# [1] 0 0
# 
# [[2]]
# [1] 0 0
# 
# [[3]]
# [1] 12 13
# 
# [[4]]
# [1] 9 9
# 
# [[5]]
# [1] 4 4
# 
# [[6]]
# [1] 116 116
# 
# [[7]]
# [1] 1 1
# 
# [[8]]
# [1] 129 129
# 
# [[9]]
# [1] 1 1
# 
# [[10]]
# [1] "CEST" "CEST"
# 
# [[11]]
# [1] NA NA

Матрица не может содержать объекты POSIXlt (или любые объекты, т.е. что-либо с явным классом).

person Roland    schedule 09.05.2016
comment
хорошо, но знаете ли вы, как я сопоставил эти даты с моими векторами v1 (средняя скорость ветра), v2 плотность) v3 (максимальная скорость ветра) v4 (минимальная скорость ветра) - person Felix Frölich; 09.05.2016
comment
потому что моя основная проблема в том, что у меня есть набор данных с некоторыми пробелами между ними, и я пытаюсь найти надежный способ получить правильный набор данных. - person Felix Frölich; 09.05.2016
comment
Вероятно, вам нужен data.frame вместо матрицы. - person Roland; 09.05.2016