【发布时间】:2016-11-14 22:54:59
【问题描述】:
data.table 1.9.6 尝试将 POSIXlt 日期分配给列时会引发错误
例如:
dt <- data.table(strdate = c("20140101", "20140103"))
dt[, date := strptime(strdate, "%Y%m%d")]
Warning message:
In `[.data.table`(dt, , `:=`(date, strptime(strdate, "%Y%m%d"))) :
Supplied 11 items to be assigned to 2 items of column 'date' (9 unused)
dt
strdate date
1: 20140101 0,0
2: 20140103 0,0
但是,数据框可以工作
df <- as.data.frame(dt)
df$date <- strptime(df$strdate, "%Y%m%d")
df
strdate date
1 20140101 2014-01-01
2 20140103 2014-01-03
data.table 是否有什么东西使它无法处理这种数据类型?
【问题讨论】:
-
看看
unclass(strptime(dt$strdate, "%Y%m%d"))——POSIXlt其实是一个列表对象。另见 - stackoverflow.com/questions/21487614/… -
已记录在案。只需改用
POSIXct。data.table有很好的转换器,如as.IDate()和as.ITime()。请参阅我刚刚添加的答案。
标签: r data.table