使用“ n()”功能的summary_all

时间:2019-09-23 18:53:24

标签: r dplyr summary

我正在使用summarize_all()函数汇总dplyr中的数据帧。如果我执行以下操作:

summarize_all(mydf, list(mean="mean", median="median", sd="sd"))

我对每个原始量度都有一个包含3个变量的小标题,均带有类型(均值,中位数,标准差)的后缀。大!但是,当我尝试捕获向量内的n来自己计算标准偏差并确保不计算丢失的单元格时...

summarize_all(mydf, list(mean="mean", median="median", sd="sd", n="n"))

...我得到一个错误:

Error in (function ()  : unused argument (var_a)

这不是我的var_a向量的问题。如果删除它,则var_b等会收到相同的错误。每当我请求summarize_alln或使用{时,n()函数都会产生奇怪的结果。 {1}}并列出我要计算的描述。

这是怎么回事?

2 个答案:

答案 0 :(得分:2)

之所以给您带来问题,是因为n()不接受任何参数,这与mean()median()不同。使用length()可获得所需的效果:

summarize_all(mydf, list(mean="mean", median="median", sd="sd", n="length"))

答案 1 :(得分:1)

在这里,如果我们想进行更精细的控制(例如添加其他参数),则可以使用~

library(dplyr)
mtcars %>% 
      summarise_all(list(mean = ~ mean(.), median = ~median(.), n = ~ n()))

但是,获取每一列的n()并没有多大意义。在执行n()

之前,先创建summarise
mtcars %>%
   group_by(n = n()) %>%
   summarise_all(list(mean = mean, median = median))

否则,只需传递未引用的函数

mtcars %>%
     summarise_all(list(mean = mean, median = median))