繁体   English   中英

如何过滤然后使用管道运算符计算平均值?

[英]How do I filter and then calculate the mean using the pipe operator?

我想过滤一个数据框,然后计算一列的平均值。 但是我想使用管道操作符,我不确定如何做到这一点。

数据框名称是vocab ,我过滤的年份是2016 我要计算平均值的列的名称是education

vocab %>%
  filter(year == 2016) %>%
  mean(vocab$education)

我在这里混淆了 dplyr 和 base r 语法吗? 我必须只对管道运算符使用 dplyr 语法吗?

执行以下任一操作:

vocab %>%
  filter(year == 2016) %>%
  summarize_at(vars(education), mean)

vocab %>%
  filter(year == 2016) %>%
  summarize_at("education", mean)

vocab %>%
  filter(year == 2016) %>%
  summarize(education = mean(education))

vocab %>%
  filter(year == 2016) %>%
  pull(education) %>%
  mean

问题不在于混合语法,而在于了解您在做什么,管道将其左侧提供给右侧函数的第一个参数,因此您的尝试意味着:

  mean(vocab %>% filter(year == 2016), vocab$education)
  # or 
  mean(filter(vocab, year == 2016), vocab$education)

这没有意义。

话虽如此,在实践中你不会看到很多$用于管道链,因为其他选项更适合语法,并且$部分匹配,这不是tidyverse团队喜欢的那种东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM