我们可以使用
dplyr 0.7.4
中的
summarize_at
、
summarize_all
和
summarize_if
来进行总结。我们可以使用
vars
和
funs
参数来设置多个列和函数,如下所示的代码。在
funs
公式的左侧被分配给汇总变量的后缀。在
dplyr 0.7.4
中,
summarise_each
(和
mutate_each
)已经被弃用,因此我们不能使用这些函数。
options(scipen = 100, dplyr.width = Inf, dplyr.print_max = Inf)
library(dplyr)
packageVersion("dplyr")
set.seed(123)
df <- data_frame(
a = sample(1:5, 10, replace=T),
b = sample(1:5, 10, replace=T),
c = sample(1:5, 10, replace=T),
d = sample(1:5, 10, replace=T),
grp = as.character(sample(1:3, 10, replace=T))
)
df %>% group_by(grp) %>%
summarise_each(.vars = letters[1:4],
.funs = c(mean="mean"))
你应该更改为以下代码。以下所有代码都有相同的结果。
df %>% group_by(grp) %>%
summarise_at(.vars = letters[1:4],
.funs = c(mean="mean"))
df %>% group_by(grp) %>%
summarise_at(.vars = names(.)[1:4],
.funs = c(mean="mean"))
df %>% group_by(grp) %>%
summarise_at(.vars = vars(a,b,c,d),
.funs = c(mean="mean"))
df %>% group_by(grp) %>%
summarise_all(.funs = c(mean="mean"))
df %>% group_by(grp) %>%
summarise_if(.predicate = function(x) is.numeric(x),
.funs = funs(mean="mean"))
您也可以拥有多个函数。
df %>% group_by(grp) %>%
summarise_at(.vars = letters[1:2],
.funs = c(Mean="mean", Sd="sd"))
paste
)应用于最后一列,而对于其他列,我只想取第一个元素或保持不变,该怎么办? - biocybermanselect
中的行为一样会很好:summarize(df, a:c, d=paste(d, collaspe =',' )
。我只想添加更多原始列以供参考。 - biocybermanmean(na.rm = TRUE)
转换为df %>% group_by(grp) %>% summarise_each(funs(mean))
。 - piotrfuns(mean(., na.rm = TRUE))
而非funs(mean)
。 - Artem Klevtsov