我正在使用 R 中一个名为 exp ( file here ) 的大型数据框。为了提高性能,建议我从 plyr 中检查 idata.frame() 函数。但我认为我用错了。
我原来的电话,很慢,但它有效:
df.median<-ddply(exp,
.(groupname,starttime,fPhase,fCycle),
numcolwise(median),
na.rm=TRUE)
使用 idata.frame,Error: is.data.frame(df) is not TRUE
library(plyr)
df.median<-ddply(idata.frame(exp),
.(groupname,starttime,fPhase,fCycle),
numcolwise(median),
na.rm=TRUE)
所以,我想,也许这是我的数据。所以我尝试了baseball
数据集。该idata.frame
示例工作正常:dlply(idata.frame(baseball), "id", nrow)
但如果我尝试使用类似于我想要的调用的东西baseball
,它不起作用:
bb.median<-ddply(idata.frame(baseball),
.(id,year,team),
numcolwise(median),
na.rm=TRUE)
>Error: is.data.frame(df) is not TRUE
也许我的错误在于我如何指定分组?任何人都知道如何让我的例子工作?
预计到达时间:
我也试过:
groupVars <- c("groupname","starttime","fPhase","fCycle")
voi<-c('inadist','smldist','lardist')
i<-idata.frame(exp)
ag.median <- aggregate(i[,voi], i[,groupVars], median)
Error in i[, voi] : object of type 'environment' is not subsettable
它使用更快的方法来获取中位数,但给出了不同的错误。我认为我根本不了解如何使用 idata.frame。