【发布时间】:2017-06-06 14:35:27
【问题描述】:
我正在尝试使用 dplyr 中的汇总函数来计算汇总统计信息,该函数使用两个参数函数从连接的数据库传递表和字段名称。不幸的是,一旦我用另一个函数包装了 summarise 函数,结果就不正确了。最终表是一个不会遍历每一行的数据框。我将在下面显示输入/输出:
汇总统计函数 库(dplyr)
data<-iris
data<- group_by(.data = data,Species)
SummaryStatistics <- function(table, field){
table %>%
summarise(count = n(),
min = min(table[[field]], na.rm = T),
mean = mean(table[[field]], na.rm = T, trim=0.05),
median = median(table[[field]], na.rm = T))
}
SummaryStatistics(data, "Sepal.Length")
输出表--不正确,只是重复同样的计算
Species count min mean median
1 setosa 50 4.3 5.820588 5.8
2 versicolor 50 4.3 5.820588 5.8
3 virginica 50 4.3 5.820588 5.8
正确的表格/期望的结果--这就是表格的样子。当我运行超大包装函数的汇总函数时,这就是它产生的结果。
Species count min mean median
1 setosa 50 4.3 5.002174 5.0
2 versicolor 50 4.9 5.934783 5.9
3 virginica 50 4.9 6.593478 6.5
我希望这很容易理解。我只是无法理解为什么摘要统计信息在包装函数之外完美地工作,但是一旦我将参数传递给它,它就会为每一行计算相同的东西。任何帮助将不胜感激。
谢谢,凯夫
【问题讨论】:
-
在不知道您如何使用包装器功能的情况下很难诊断。但猜测一下,一旦进入包装函数,
summarize可能不知道计算中使用的分组因子。因此它将为所有行返回相同的摘要。 -
@jdobres 我将添加包装函数。对此感到抱歉。
-
您需要使用标准评估。阅读上面的
dplyr小插图以获得更好的想法。
标签: r statistics dplyr