【问题标题】:conditionally summarize several variables by group按组有条件地总结几个变量
【发布时间】:2021-02-06 01:58:25
【问题描述】:

我想按组有条件地总结几个变量。以下代码可以做到这一点,但我不确定如何在不指定每个变量和汇总步骤中的条件的情况下做到这一点。

library(tidyverse)

dat <- data.frame(group = c("A", "A", "A", "B", "B", "B"),
                  indicator = c(1, 2, 3, 1, 2, 3),
                  var1 = c(1, 0, 1, 2, 1, 2),
                  var2 = c(1, 0, 1, 1, 2, 1))

# dat
#  group indicator var1 var2
#1     A         1    1    1
#2     A         2    0    0
#3     A         3    1    1
#4     B         1    2    1
#5     B         2    1    2
#6     B         3    2    1

dat %>%
  group_by(group) %>%
  summarise(var1 = sum(var1[indicator==1 | indicator==2]),
            var2 = sum(var2[indicator==1 | indicator==2])) 

# A tibble: 2 x 3
#  group  var1  var2
#* <chr> <dbl> <dbl>
#1     A     1     1
#2     B     3     3

【问题讨论】:

    标签: r


    【解决方案1】:

    使用across

    library(dplyr)
    
    dat %>%
      group_by(group) %>%
      summarise(across(starts_with('var'), ~sum(.[indicator %in% 1:2])))
    
    #  group  var1  var2
    #* <chr> <dbl> <dbl>
    #1 A         1     1
    #2 B         3     3
    

    【讨论】:

    • 谢谢!离合器:sum(.[indicator %in% 1:2])
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 2017-01-11
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多