我有一个数据框。
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。
有人可以帮我解决这个问题吗?
提前致谢!
答案 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