【发布时间】:2014-04-02 01:47:04
【问题描述】:
我有一个 data.table DT 有两列
V1 V2
1: 1 3
2: 2 4
3: 3 5
4: 2 2
5: 3 8
6: 1 4
7: 2 5
对于每一行,我想获取具有相同 V1 的所有条目并添加 V2 条目,然后将 V2 条目除以该总和并添加到第三列。例如,在第 1 行第 3 列中,答案应该是 3/(3+4)。在第 2 行第 3 列中,答案应该是 4/(4+2+5) 等。
最终我应该拥有
V1 V2 V3
1: 1 3 0.4285714
2: 2 4 0.3636364
3: 3 5 0.3846154
4: 2 2 0.1818182
5: 3 8 0.6153846
6: 1 4 0.5714286
7: 2 5 0.4545455
我可以通过q <- DT[,V2/sum(V2),by='V1'] 获得V3,但是这些行的顺序错误
V1 V1
1: 1 0.4285714
2: 1 0.5714286
3: 2 0.3636364
4: 2 0.1818182
5: 2 0.4545455
6: 3 0.3846154
7: 3 0.6153846
所以简单地将q 的第二列粘贴到DT 是行不通的。此外,有点尴尬的是,data.tableq 现在有两列同名,V1。
我这几天一直在努力解决这个问题,搜索了高低,仍然无法得出一个简单的答案。任何帮助将不胜感激。
【问题讨论】:
标签: r data.table