我在R中具有以下数据帧(实际数据帧是数百万行,具有成千上万个唯一的Column A值):
Row Column A Column B
1 130077 65
2 130077 65
3 130077 65
4 200040 10
5 200040 10
如何在不包括重复的A列值的情况下将按A列值分组的B列值相加?正确的输出为:
130077 65
200040 10
........
我尝试使用filter和group_by都没有成功,因为最终输出的确按A列的值求和,但包含重复的值。
答案 0 :(得分:0)
一种选择是获取distinct
行,然后按'ColumnA'分组并获取'ColumnB'的sum
library(dplyr)
df1 %>%
distinct(ColumnA, ColumnB) %>% # The example gives the expected output here
group_by(ColumnA) %>%
summarise(ColumnB = sum(ColumnB))
或者在base R
中与unique
和aggregate
aggregate(ColumnB ~ ColumnA, unique(df1[c("ColumnA", "ColumnB")]), sum)