summarize_all 具有 "n()" 功能
summarize_all with "n()" function
我正在使用 summarize_all()
函数在 dplyr 中总结一个数据框。如果我执行以下操作:
summarize_all(mydf, list(mean="mean", median="median", sd="sd"))
对于我的每个原始度量,我得到一个包含 3 个变量的小标题,所有变量都以类型(均值、中位数、标准差)作为后缀。伟大的!但是当我尝试捕获 within-vector n 来自己计算标准偏差并确保不计算丢失的单元格时...
summarize_all(mydf, list(mean="mean", median="median", sd="sd", n="n"))
...我得到一个错误:
Error in (function () : unused argument (var_a)
这不是我的 var_a
向量的问题。如果删除它,var_b
等也会出现相同的错误。每当我请求 n
或 n()
时,summarize_all
函数都会产生奇怪的结果,或者如果我使用 .funs()
并列出我想要计算的描述。
怎么回事?
这里,如果我们想要更好的控制,可以使用~
,即添加其他参数
library(dplyr)
mtcars %>%
summarise_all(list(mean = ~ mean(.), median = ~median(.), n = ~ n()))
但是,为每一列获取 n()
没有多大意义,因为它们是一样的。而是在执行 summarise
之前创建 n()
mtcars %>%
group_by(n = n()) %>%
summarise_all(list(mean = mean, median = median))
否则,只传递未引用的函数
mtcars %>%
summarise_all(list(mean = mean, median = median))
它给您带来问题的原因是因为 n()
不接受任何参数,这与 mean()
和 median()
不同。使用 length()
来获得想要的效果:
summarize_all(mydf, list(mean="mean", median="median", sd="sd", n="length"))
我正在使用 summarize_all()
函数在 dplyr 中总结一个数据框。如果我执行以下操作:
summarize_all(mydf, list(mean="mean", median="median", sd="sd"))
对于我的每个原始度量,我得到一个包含 3 个变量的小标题,所有变量都以类型(均值、中位数、标准差)作为后缀。伟大的!但是当我尝试捕获 within-vector n 来自己计算标准偏差并确保不计算丢失的单元格时...
summarize_all(mydf, list(mean="mean", median="median", sd="sd", n="n"))
...我得到一个错误:
Error in (function () : unused argument (var_a)
这不是我的 var_a
向量的问题。如果删除它,var_b
等也会出现相同的错误。每当我请求 n
或 n()
时,summarize_all
函数都会产生奇怪的结果,或者如果我使用 .funs()
并列出我想要计算的描述。
怎么回事?
这里,如果我们想要更好的控制,可以使用~
,即添加其他参数
library(dplyr)
mtcars %>%
summarise_all(list(mean = ~ mean(.), median = ~median(.), n = ~ n()))
但是,为每一列获取 n()
没有多大意义,因为它们是一样的。而是在执行 summarise
n()
mtcars %>%
group_by(n = n()) %>%
summarise_all(list(mean = mean, median = median))
否则,只传递未引用的函数
mtcars %>%
summarise_all(list(mean = mean, median = median))
它给您带来问题的原因是因为 n()
不接受任何参数,这与 mean()
和 median()
不同。使用 length()
来获得想要的效果:
summarize_all(mydf, list(mean="mean", median="median", sd="sd", n="length"))