r - dplyr 中条件的多个组的汇总计数

标签 r dplyr

我有一个如下所示的数据框:

data <- data.frame(a=c(1,1,0,0,0,0,1,1,1, 0), 
               b=c("x","x","x","x","x","y","y","y","z","z"),
               c=c(2, 1, 2, 3, 4, NA, 4, 2, 1, 1), 
               d= c("s", "m", "l", "l", "l", "m", "m", "s", "s", "m"))

我想找到一种方法来创建一个新变量 e,它是当 d 和 b 的每种组合 a=1 时 c 中的值的总和。我尝试了几种选项,但都没有给我我想要的东西,例如:

data <- data %>% 
    group_by(d, b) %>% 
    summarise (e = sum(data$c[which(data$a=="x")]))

最终看起来像这样:

       d      b     e
1      s      x     2
2      m      x     1
3      l      x     9
4      m      y     4
5      s      y     2
6      s      z     1
7      s      z     1

但不幸的是,我只得到一个常数 e?任何帮助表示赞赏!

最佳答案

library(dplyr)

data <- data_frame(
  a=c(1,1,0,0,0,0,1,1,1, 0), 
                   b=c("x","x","x","x","x","y","y","y","z","z"),
                   c=c(2, 1, 2, 3, 4, NA, 4, 2, 1, 1), 
                   d= c("s", "m", "l", "l", "l", "m", "m", "s", "s", "m"))

data
#> # A tibble: 10 x 4
#>        a     b     c     d
#>    <dbl> <chr> <dbl> <chr>
#>  1     1     x     2     s
#>  2     1     x     1     m
#>  3     0     x     2     l
#>  4     0     x     3     l
#>  5     0     x     4     l
#>  6     0     y    NA     m
#>  7     1     y     4     m
#>  8     1     y     2     s
#>  9     1     z     1     s
#> 10     0     z     1     m

data %>% 
  group_by(d, b) %>% 
  mutate(e = if_else(a == 1, c, 0)) %>% 
  summarise(e = sum(e, na.rm = TRUE))

#> Source: local data frame [7 x 3]
#> Groups: d [?]
#> 
#> # A tibble: 7 x 3
#>       d     b     e
#>   <chr> <chr> <dbl>
#> 1     l     x     0
#> 2     m     x     1
#> 3     m     y     4
#> 4     m     z     0
#> 5     s     x     2
#> 6     s     y     2
#> 7     s     z     1

如果您愿意,您也可以在摘要调用中完成这一切:

summarise(e = if_else(a == 1, c, 0) %>% sum(na.rm = TRUE))

关于r - dplyr 中条件的多个组的汇总计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44338803/

相关文章:

r - 按两个变量组汇总

r - 与 dplyr : turn one row into many 中的 'summarise' 相反

r - Julia:外积函数

r - 在 R 中使用 igraph 绘制(连接的)三元组的随机样本

r - 将包含双引号的文本字符串发送到函数

r - 如何为非重复行创建唯一标识符?

r - dplyr 中基于 Shiny 输入的条件过滤器

r - 安装自定义包时在 'lib.loc' 中未找到库树

r - 当未找到给定函数的绑定(bind)时,如何防止箭头将数据拉入 R?

R 循环函数参数以将变量添加到数据框