3 回答

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
summarize_at
, summarize_all
summarize_if
dplyr 0.7.4
vars
funs
dplyr 0.7.4
, summarise_each
mutate_each
options(scipen = 100, dplyr.width = Inf, dplyr.print_max = Inf)library(dplyr)packageVersion("dplyr")# [1] ‘0.7.4’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)) # For convenience, specify character type)df %>% group_by(grp) %>% summarise_each(.vars = letters[1:4], .funs = c(mean="mean"))# `summarise_each()` is deprecated.# Use `summarise_all()`, `summarise_at()` or `summarise_if()` instead.# To map `funs` over a selection of variables, use `summarise_at()`# Error: Strings must match column names. Unknown columns: mean
# summarise_atdf %>% 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"))# summarise_alldf %>% group_by(grp) %>% summarise_all(.funs = c(mean="mean"))# summarise_ifdf %>% group_by(grp) %>% summarise_if(.predicate = function(x) is.numeric(x), .funs = funs(mean="mean"))# A tibble: 3 x 5# grp a_mean b_mean c_mean d_mean# <chr> <dbl> <dbl> <dbl> <dbl># 1 1 2.80 3.00 3.6 3.00# 2 2 4.25 2.75 4.0 3.75# 3 3 3.00 5.00 1.0 2.00
df %>% group_by(grp) %>%
summarise_at(.vars = letters[1:2],
.funs = c(Mean="mean", Sd="sd"))
# A tibble: 3 x 5
# grp a_Mean b_Mean a_Sd b_Sd
# <chr> <dbl> <dbl> <dbl> <dbl>
# 1 1 2.80 3.00 1.4832397 1.870829
# 2 2 4.25 2.75 0.9574271 1.258306
# 3 3 3.00 5.00 NA NA
- 3 回答
- 0 關(guān)注
- 839 瀏覽
添加回答
舉報(bào)