我正在使用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_all
或n
或使用{时,n()
函数都会产生奇怪的结果。 {1}}并列出我要计算的描述。
这是怎么回事?
答案 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))