r - 在 dplyr 的汇总函数中进行过滤

标签 r dplyr

我在使用 dplyr 时遇到了一些困难,因为我想同时做两件事,并且想知道这是否可能。

我想计算值的平均值,同时计算其他列中具有特定值的值的平均值。

library(dplyr)
set.seed(1234)
df <- data.frame(id=rep(1:10, each=14),
                 tp=letters[1:14],
                 value_type=sample(LETTERS[1:3], 140, replace=TRUE),
                 values=runif(140))

df %>%
  group_by(id, tp) %>%
  summarise(
    all_mean=mean(values),
    A_mean=mean(values), # Only the values with value_type A
    value_count=sum(value_type == 'A')
  )

因此,A_mean 列应计算 values 的平均值,其中 value_count == 'A'

我通常会执行两个单独的命令并稍后合并结果,但我想有一种更方便的方法,但我只是不明白。

提前致谢。

最佳答案

我们可以尝试

 df %>%
     group_by(id, tp) %>%
     summarise(all_mean = mean(values), 
                A_mean = mean(values[value_type=="A"]),
                value_count=sum(value_type == 'A'))

关于r - 在 dplyr 的汇总函数中进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38094244/

相关文章:

r - 使用 dplyr 进行汇总 - 一个变量始终位于底部

r - 如何在变异后将 t.test() 应用于多对列

r - 如何在R中使用dplyr生成以当前行为条件的多行?

r 系统函数 cd 进入带空格的文件夹名称

r - 如何在不使用循环的情况下动态舍入/格式化数字向量?

rvest:for循环/映射使用html_node和html_table拉取多个表

r - ggplot 中的 geom_text 与 geom_col 和位置 "dodge"

c++ - 从 R 翻译的随机生成代码在 C++ 中失败

r - 转换为 data.frame 时保留表的尺寸

css - 在 Shiny 的仪表板中对齐标题元素