我最近发现了data.table包,现在想知道我是否应该替换我的一些plyr代码.总而言之,我真的很喜欢普利尔,我基本上实现了我想要的一切.但是,我的代码运行了一段时间,加快速度的前景足以让我进行一些测试.那些测试很快就结束了,这就是原因.
我经常使用plyr做的是将数据拆分为包含日期的列并进行一些计算:
library(plyr)
DF <- data.frame(Date=rep(c(Sys.time(), Sys.time() + 60), each=6), y=c(rnorm(6, 1), rnorm(6, -1)))
#Split up data and apply arbitrary function
ddply(DF, .(Date), function(df){mean(df$y) - df[nrow(df), "y"]})
Run Code Online (Sandbox Code Playgroud)
但是,使用具有日期格式的列似乎在data.table中不起作用:
library(data.table)
DT <- data.table(Date=rep(c(Sys.time(), Sys.time() + 60), each=6), y=c(rnorm(6, 1), rnorm(6, -1)))
setkey(DT, Date)
#Error in setkey(DT, Date) : Column 'Date' cannot be auto converted to integer without losing information.
Run Code Online (Sandbox Code Playgroud)
如果我正确理解了包,那么当我使用setkey()时,我只能获得大幅提升.另外,我认为在Date和数字之间不断转换不是很好的编码.所以我错过了一些东西,还是没有简单的方法来实现data.table?
sessionInfo()
R version 2.13.1 (2011-07-08)
Platform: x86_64-pc-mingw32/x64 (64-bit)
locale:
[1] C
attached base packages:
[1] grid stats graphics grDevices utils datasets …Run Code Online (Sandbox Code Playgroud)