У меня есть некоторые данные, которые класс символов:Проблем, связанные с созданием нового столбца в DataTable с помощью strptime
class(solarX[,MEASDATE])
[1] "character"
Который выглядит следующим образом:
head(solarX[,MEASDATE])
[1] "1/05/2015 0:00" "1/05/2015 0:30" "1/05/2015 1:00" "1/05/2015 1:30" "1/05/2015 2:00" "1/05/2015 2:30"
Однако, я не хочу в формате символов и должны иметь доступ к части времени и минут времени.
Что я попытался это:
strptime(solarX[,MEASDATE], "%d/%m/%Y %H:%M"))
Который прекрасно работает, это дает мне:
[1] "2015-05-01 00:00:00 AEST" "2015-05-01 00:30:00 AEST" "2015-05-01 01:00:00 AEST" "2015-05-01 01:30:00 AEST" "2015-05-01 02:00:00 AEST"
[6] "2015-05-01 02:30:00 AEST"
class(strptime(solarX[,MEASDATE], "%d/%m/%Y %H:%M"))
[1] "POSIXlt" "POSIXt"
Однако, когда я иду, чтобы увеличить свою исходную таблицу данных, выполнив:
solarX[, date := strptime(solarX[,MEASDATE], "%d/%m/%Y %H:%M")]
(solarX - мой стол данных)
я получаю следующее предупреждение:
Warning message:
In `[.data.table`(solarX, , `:=`(date, strptime(solarX[, MEASDATE], :
Supplied 11 items to be assigned to 17568 items of column 'date' (recycled leaving remainder of 1 items)
И таблица данных возвращается выглядит ужасно:
MEASDATE rrp exp_kwh date
1: 1/05/2015 0:00 33.99299 0 0,0,0,0,0,0,
2: 1/05/2015 0:30 31.53335 0 0,30, 0,30, 0,30,
3: 1/05/2015 1:00 29.37092 0 0,0,1,1,2,2,
4: 1/05/2015 1:30 28.03197 0 1,1,1,1,1,1,
5: 1/05/2015 2:00 26.82800 0 4,4,4,4,4,4,
6: 1/05/2015 2:30 25.22149 0 115,115,115,115,115,115,
Очевидно, что я не хочу в колонке «дата», чтобы выглядеть, а он был полностью заполнен со значениями, полученными из исходной функции strptime.
'solarX [, дата: = strptime (MEASDATE, "% д /% м /% Y% H:% M") ] ' – HubertL
удалите' solarX' внутри 'strptime' – SymbolixAU
да, что @HubertL сказал. – SymbolixAU