R中的data.table包提供了以下选项:
其中:'TRUE'返回'i'匹配的'x'的整数行数.
但是,我认为无法j在使用的组建立的组内获得"x"的整数行数by.
例如,给定......
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6))
Run Code Online (Sandbox Code Playgroud)
...我想知道y的每个值的DT索引.
对我来说,值是我正在使用data.table与另一个数据结构(ADS)并行,我打算根据data.table的有效计算分组执行分组计算.
例如,假设ADS是一个向量,其中DT中的每一行都有一个值:
ADS<-sample(100,nrow(DT))
Run Code Online (Sandbox Code Playgroud)
作为解决方法,如果我首先向data.table添加新的序列列,我可以计算由DT $ y确定的ADS的分组均值.
DT[,seqNum:=seq_len(nrow(DT))]
DT[,mean(ADS[seqNum]),by=y]
Run Code Online (Sandbox Code Playgroud)
这会以添加新列为代价提供我想要的结果.
我意识到在这个例子中我可以使用tapply得到相同的答案:
tapply(ADS,DT$y,mean)
Run Code Online (Sandbox Code Playgroud)
但是,我不会获得data.tables有效分组的性能优势(特别是当'by'列被索引时).
也许有一些我忽略的语法???
也许这是一个简单的功能添加到data.table我应该请求它(眨眼,眨眼)???
建议的语法:可选择将'.which'设置为组索引,允许写:
DT[,mean(ADS[.which]),by=y,which=TRUE]
Run Code Online (Sandbox Code Playgroud)