首页 > 解决方案 > 如何为两列的唯一值汇总行

问题描述

我正在尝试在 df 中创建一个行和,例如:

df1
Name    Ch1    Val1
A        a     x1
A        a     x2
A        b     x3
B        c     x4
B        c     x5
B        d     x6
...

df2
Name    Ch1    Val1
A        a     x1+x2
A        b     x3
B        c     x4+x5
B        d     x6
...

我想获得 Val1 (数字!)的行和,其中 Ch1 (字符)根据名称(字符)是唯一的!我知道我可以加入 Name 和 Ch1 然后做 rowsum 然后再次传播它,但有没有更优雅的方法来做到这一点?

谢谢!

标签: rdata-cleaning

解决方案


一个选项是按“Name”、“Ch1”和paste“Val1”列值进行分组

library(stringr)
library(dplyr)
df1 %>%
   group_by(Name, Ch1) %>%
   summarise(Val1 = str_c(Val1, collapse="+"))

推荐阅读