试图了解dplyr 使用的非标准评估,但没有成功。我想要一个简短的函数,它返回一组指定变量的汇总统计数据(N、平均值、标准差、中位数、IQR、最小值、最大值)。
我的功能的简化版本...
my_summarise <- function(df = temp,
to.sum = 'eg1',
...){
## Summarise
results <- summarise_(df,
n = ~n(),
mean = mean(~to.sum, na.rm = TRUE))
return(results)
}
并用一些虚拟数据运行它......
set.seed(43290)
temp <- cbind(rnorm(n = 100, mean = 2, sd = 4),
rnorm(n = 100, mean = 3, sd = 6)) %>% as.data.frame()
names(temp) <- c('eg1', 'eg2')
mean(temp$eg1)
[1] 1.881721
mean(temp$eg2)
[1] 3.575819
my_summarise(df = temp, to.sum = 'eg1')
n mean
1 100 NA
计算了N,但平均值没有,无法弄清楚为什么。
最终,我希望我的功能更通用,沿着......
my_summarise <- function(df = temp,
group.by = 'group'
to.sum = c('eg1', 'eg2'),
...){
results <- list()
## Select columns
df <- dplyr::select_(df, .dots = c(group.by, to.sum))
## Summarise overall
results$all <- summarise_each(df,
funs(n = ~n(),
mean = mean(~to.sum, na.rm = TRUE)))
## Summarise by specified group
results$by.group <- group_by_(df, ~to.group) %>%
summarise_each(df,
funs(n = ~n(),
mean = mean(~to.sum, na.rm = TRUE)))
return(results)
}
...但在我进入这个更复杂的版本之前(我使用这个示例作为指导),我需要首先在简单版本中进行评估,因为这是绊脚石,调用dplyr::select()
工作正常。
感谢任何关于我哪里出错的建议。
提前致谢