对于一个 Dataframe ,我使用dplyr聚合一些列,如下所示。
> data <- data.frame(a=rep(1:2,3), b=c(6:11))
> data
a b
1 1 6
2 2 7
3 1 8
4 2 9
5 1 10
6 2 11
> data %>% group_by(a) %>% summarize(tot=sum(b))
# A tibble: 2 x 2
a tot
<int> <int>
1 1 24
2 2 27
这是完美的。但是我想创建一个可重用的函数,这样一个列名可以作为参数传递。
在查看here等相关问题的答案时,我尝试了以下方法。
sumByColumn <- function(df, colName) {
df %>%
group_by(a) %>%
summarize(tot=sum(colName))
df
}
但是我无法让它工作。
> sumByColumn(data, "b")
Error in summarise_impl(.data, dots) :
Evaluation error: invalid 'type' (character) of argument.
> sumByColumn(data, b)
Error in summarise_impl(.data, dots) :
Evaluation error: object 'b' not found.
>
4条答案
按热度按时间iezvtpos1#
这可以使用最新的
dplyr
语法(如github所示):另一种将
b
指定为变量的方法是:bnl4lu3b2#
我们可以使用
{{}}
:piv4azn73#
dplyr
现在还为此提供了辅助函数(summarise_at
,它接受参数vars
、funs
给出了相同的答案
2guxujil4#
我们可以使用代词
.data
。