在 R 中聚合具有条件的行

德英乐

我的例子

df <- data.frame(id1 = c("a" , "b", "c"),
                 id2 = c("a", "a", "d"),
                 n1 = c(2,2,0),
                 n2 = c(2,1,1),
                 n3 = c(0,1,1),
                 n4 = c(0,1,1))

首先,我已经像这样汇总了跨列的所有行

df <- df %>%
group_by(id2) %>% 
summarise(across(c(n1,n2,n3,n4), sum, na.rm = TRUE), 
            .groups = "drop")

现在,但现在我想只有聚合具有2行第一a列中id2id1自从我希望这样输出以来,我们如何保留该列老实说,那一栏只是用来比较的,id2相当多余,但我真的想保留它。

id1 id2 n1 n2 n3 n4 
a   a   4  3  1  1
c   d   0  1  1  1

对此有何建议?

罗纳克·沙阿

更改其中的id2'a'

library(dplyr)

df %>%
  group_by(id1 = ifelse(id2 == 'a', id2, id1), id2) %>% 
  summarise(across(starts_with('n'), sum, na.rm = TRUE), .groups = "drop")

#  id1   id2      n1    n2    n3    n4
#  <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#1 a     a         4     3     1     1
#2 c     d         0     1     1     1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章