r data.table序列日期

时间:2014-03-11 00:21:46

标签: r date sequence data.table

我有一个关于按组排序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”对象

提前致谢!

2 个答案:

答案 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)]