Rob*_*uyt 1 performance r data.table
我有一个巨大的data.frame(200万个障碍),我根据一个相同的列值计算多个列值的总和,如下所示(首先转换为data.table):
check <- dt[,sumOB := (sum(as.numeric(as.character(OB))), by = "BIK"]
Run Code Online (Sandbox Code Playgroud)
这给了我一个新列,其中的和值为适用的多个值,具有相同的BIK.我添加以下计算后.
calc <- check[,NewVA := (((as.numeric(as.character(VA)))
/ sumOB) * (as.numeric(as.character(OB)))), by = ""]
Run Code Online (Sandbox Code Playgroud)
这非常合适,给我一个具有所需值的新列.我的数据帧包含200万个观察结果,这个过程非常缓慢且内存密集(我有8GB的内存并且我使用了所有内容).
我想加快这个过程,是否有更有效的方法来达到相同的结果?
提前致谢,
罗伯特
我不明白你为什么把所有东西都包裹起来as.numeric(as.character(...)).这是你不应该需要的性能成本.
另外你为什么要复制data.table?那是你最大的错误.看着
dt[,sumOB := (sum(as.numeric(as.character(OB))), by = "BIK"]
dt[,NewVA :=
(((as.numeric(as.character(VA))) / sumOB) * (as.numeric(as.character(OB))))]
print(dt)
Run Code Online (Sandbox Code Playgroud)
(可能没有所有类型的转换).
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |