我想过滤一个数据框,然后计算一列的平均值。但是我想使用管道运算符,我不确定该怎么做。
数据框名称为vocab
,而我要过滤的年份为2016
。我要计算平均值的列的名称为education
。
vocab %>%
filter(year == 2016) %>%
mean(vocab$education)
我在这里混合使用dplyr和base r语法吗?我必须只对管道运算符使用dplyr语法吗?
答案 0 :(得分:1)
执行以下任一操作:
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
团队喜欢的事情。