代码之家  ›  专栏  ›  技术社区  ›  Eric Green

按组有条件地总结几个变量

r
  •  0
  • Eric Green  · 技术社区  · 5 年前

    我想按组有条件地总结几个变量。下面的代码可以做到这一点,但是我不知道如果不在summary步骤中指定每个变量和条件,如何做到这一点。

    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
    
    1 回复  |  直到 5 年前
        1
  •  2
  •   Ronak Shah    5 年前

    使用 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