R: as.Date доставляет числа в матрице, но с одним числом дата - разница? - PullRequest
0 голосов
/ 04 июня 2018

У меня есть даты в формате "X12.11.1985", и если я использую функцию as.date() для преобразования ее в matrix, она выдаст одно число.Если я использую as.date() только с одной датой, тогда получается реальная дата.

Почему результат функции as.Date() отличается в моем коде?

Большое спасибо!

Минимальный пример:

 col1 = c("X01.03.1988","X05.05.1995","X11.11.1990")
 col2 = c(1,3,2)
 mat = cbind(col1,col2)      
 mat[,'col1'] <- as.Date(mat[,'col1'], format='X%d.%m.%Y')
 mat <- mat[order(as.numeric(mat[,'col1'])),]
 mat #Result is ordered correct but as.Date converts the dates to numbers like "6634"

 as.Date("X01.03.1988",format='X%d.%m.%Y') #Converts the date to a date like "1988-03-01"

1 Ответ

0 голосов
/ 04 июня 2018

Матрица не может содержать объекты Date (а также может содержать только один тип данных).Это так просто.Вам понадобится другая структура данных, например data.frame.

col1 = c("X01.03.1988","X05.05.1995","X11.11.1990")
col2 = c(1,3,2)
mat = data.frame(col1,col2) #correct data structure      
mat[,'col1'] <- as.Date(mat[,'col1'], format='X%d.%m.%Y')
mat <- mat[order(as.numeric(mat[,'col1'])),]
mat 
#        col1 col2
#1 1988-03-01    1
#3 1990-11-11    2
#2 1995-05-05    3
...