我想复制SQL查询"从...组中选择sum(x / y)..."其中first(x / y)然后使用R中的data.table包通过适当的分组来总结该除法的结果。我的数据集是100万行,因此速度是必不可少的。我在下面的简单玩具示例中列出了我当前的程序方法:
require(data.table)
DT <- data.table(testkey=rep("a",3),x=1:3,y=1:3)
DT
DT[,x:=y/x]
DT
DT <- DT[,lapply(.SD,sum),by=testkey]
DT
有没有更快的方法来实现这个或更好的方法来一步完成除法和求和?另外,通过引用调用计算效率最高的方法进行划分?
答案 0 :(得分:4)
这应该这样做
DT[, .(x=sum(y/x)), by=testkey]