我有一个关于按组排序data.table的日期的问题。
我有这个代码用于过去工作但现在它无法正常工作。
我已经发现这个问题与更新版本的data.table包有关。
代码只适用于旧版本(1.8.x),现在更新为1.9.2,代码无效。
任何人都可以帮我解决这个问题。
以下是一些数据:
test_data <- data.frame(group=c(1,2,3),
date=c("2011-01-01","2012-02-02","2013-03-03"),
date2=Sys.Date(),
stringsAsFactors=FALSE)
test_data[,"date"] <- as.Date(test_data[,"date"])
test_data[,"date2"] <- as.Date(test_data[,"date2"])
这是我的代码“
library("data.table")
identifier <- "group"
results <- data.table(test_data)[,{s=seq(from=date,to=Sys.Date(),by="days")},
by=list(group,date)]
我收到以下错误:
Ops.Date(del,by)中的错误:/未定义为“Date”对象
提前致谢!
答案 0 :(得分:2)
您可以尝试使用as.POSIXct
代替as.Date
。根据我的经验,data.table
适用于POSIXct
类型而不是date
类型
答案 1 :(得分:0)
看起来date
列被强制转换为数字,正如您在
data.table(test_data)[, date, by=list(group,date)]
# group date date
#1: 1 2011-01-01 14975
#2: 2 2012-02-02 15372
#3: 3 2013-03-03 15767
我认为这是一个回归,因为它适用于旧版本的data.table,但你可以通过强制回到Date来解决。
data.table(test_data)[, seq(as.Date(date, origin="1970-01-01"), Sys.Date(), by="days"),
by=list(group,date)]