使用管道时,如何获得功能正常的功能?

时间:2018-10-09 10:13:35

标签: r dplyr

这可能是一个简单的问题,但是我很难使dplyr的平均值函数起作用。

如果输入以下内容,以mtcars数据集为例:

data(mtcars)

mtcars %>%
select (mpg) %>%
mean()

我收到“警告消息: 在mean.default(。)中:参数不是数字或逻辑:返回“ NA”错误消息。

由于某些原因,如果我重复相同的代码而只要求“摘要”,“范围”或其他几种统计计算,则它们可以正常工作:

data(mtcars)

mtcars %>%
select (mpg) %>%
summary()

类似地,如果我以基数R表示法运行mean函数,那也可以正常工作:

mean(mtcars$mpg)

谁能指出我做错了什么?

2 个答案:

答案 0 :(得分:1)

使用pull拉出向量。

mtcars %>%
  pull(mpg) %>%
  mean()
# [1] 20.09062

或使用pluck包中的purrr

mtcars %>%
  purrr::pluck("mpg") %>%
  mean()
# [1] 20.09062

或者先进行总结,然后得出均值。

mtcars %>%
  summarize(mean = mean(mpg)) %>%
  pull(mean)
# [1] 20.09062

答案 1 :(得分:1)

dplyr中,只要不更改原始数据帧(重新排序,过滤,添加等),而是创建一个 new,就可以使用summarise() 数据框,其中包含第一个数据框的摘要统计信息。

enter image description here

mtcars %>%
  summarise(mean_mpg = mean(mpg))

给出输出:

  mean_mpg
1 20.09062

PS。如果您正在学习dplyr,则学习这五个动词将使您走很长一段路:select()filter()group_by()summarise(),{{1} }。