我正在尝试使用dplyr中的summarize函数,使用传递来自连接数据库的表和字段名称的两个参数的函数来计算摘要统计信息。不幸的是,一旦我用另一个函数包装summarize函数,结果就不正确了。最终的表格是一个数据框,而不是遍历每一行。下面我将展示输入/输出:
摘要统计信息函数
library(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
希望这很容易理解。我只是不明白为什么总结统计数据在包装函数之外完美运作,但一旦我传递参数给它,它就会为每一行计算相同的东西。任何帮助都将不胜感激。
谢谢,Kev
dplyr
的文档以获得更好的理解。 - Jake Kaupp