R检查重复项,然后将一列与另一列分开

时间:2013-12-11 22:56:52

标签: r dataframe duplicates

我有一个数据框。

    1     2     3 
A   1    100   45
B   1    100   30
C   2    80    20

首先,我想找到行中的重复元素(对于A和B,1 = 1)。之后我想要R加起来A3和B3(45 + 30 = 75),但只有1是重复的。然后,将A3与该答案分开(因此,45/75 = 0.6),B3和答案相同。然后分别乘以A2和A3。

这些答案应相应地更新数据框。因此A2应该变为60,B2应该变为40。

有人可以帮我解决这个问题吗?

提前致谢!

1 个答案:

答案 0 :(得分:3)

df <- read.table(textConnection(
'A   1    100   45
B   1    100   30
C   2    80    20'), header = FALSE)

library(data.table)
dt <- data.table(df)

dt[,NewV4 := V3*V4/sum(V4), by = 'V2']

输出 -

> dt
   V1 V2  V3 V4 NewV4
1:  A  1 100 45    60
2:  B  1 100 30    40
3:  C  2  80 20    80