在R中使用summarise()并按条件保留其他列的方法
按条件保留列并分组求和的实现方法
现有如下数据框:
df <- data.frame(x = c("a", "a"), y = c("a", "b"), z = c(4, 5))
对应输出:
x y z a a 4 a b 5
使用dplyr的summarise()按x分组对z求和的代码如下:
df %>% group_by(x) %>% summarise(z = sum(z))
得到结果:
x z a 9
现在需要在求和后保留x=y对应的y列,期望输出:
x y z a a 9
可以在summarise()中指定y的取值,直接提取分组内满足x == y的y值即可,代码如下:
df %>% group_by(x) %>% summarise( y = y[x == y], z = sum(z) )
如果分组内存在多个x == y的情况,也可以用first(y[x == y])来取第一个符合条件的值,保证结果唯一。
内容的提问来源于stack exchange,提问作者aerw4
相关产品推荐
相关产品推荐

