R - 在R中合并数据框内的重复行

3
我有一个如下的数据框:请注意,COL1中有重复的条目。
COL1 COL2 COL3
10   hai   2   
10   hai   3
10   pal   1

我希望输出结果如下所示:即COL1应该只有独特的条目(10),COL2应该包含其下的合并条目而无重复项(hai pal),COL3应包含条目的总和(2+3+1=6)。
输出结果:
COL1   COL2     COL3
10    hai pal    6
1个回答

0

也许我们需要按组聚合。将 'data.frame' 转换为 'data.table' (setDT(df1)),以 'COL1' 为分组依据,将 'COL2' 中的 unique 元素拼接在一起,并获取 'COL3' 的 sum

library(data.table)
setDT(df1)[,.(COL2  = paste(unique(COL2), collapse=" "), COL3= sum(COL3)) , by = COL1]
#     COL1    COL2 COL3
#1:    10 hai pal    6

2
使用 dplyr,可以这样对数据框进行分组汇总:df %>% group_by(COL1) %>% summarise(COL2 = paste0(unique(COL2), collapse = " "), COL3 = sum(COL3)) - Ronak Shah
1
@Rambo 你只需要赋值,即 df2 <- setDT(df1)[,.(COL2 = paste(unique(COL2), collapse=" "), COL3= sum(COL3)) , by = COL1] 如果你需要转换为 data.frame,则使用 setDT(df2) - akrun
@akrun 当我使用setDT时出现错误(错误:找不到函数“setDT”)...... 我是R的新手,请指导我。 - user7008198
1
@Rambo 你需要加载 library(data.table)。如果没有安装,则需要执行 install.packages("data.table") - akrun
1
@akrun 太棒了!这对我有用。很高兴你帮忙 :) :) - user7008198
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接