R 如何通过变量在聚合中保留名称
下面是一个示例和自解释的案例,以及所需的解决方案:R 如何通过变量在聚合中保留名称,r,R,下面是一个示例和自解释的案例,以及所需的解决方案: set.seed(123) df <- data.frame(s=rnorm(100), g1=seq(1,100,,100),g2=seq(5,100,,100),g3=seq(10,1,,100)) agg <- with(df, aggregate(s, data.frame(g1,g2,g3), FUN = function(x) c("mean" = mean(
set.seed(123)
df <- data.frame(s=rnorm(100), g1=seq(1,100,,100),g2=seq(5,100,,100),g3=seq(10,1,,100))
agg <- with(df, aggregate(s, data.frame(g1,g2,g3),
FUN = function(x) c("mean" = mean(x), "median" = median(x))))
head(agg,5)
g1 g2 g3 x.mean x.median
1 100 100.00000 1.000000 -1.0264209 -1.0264209
2 99 99.04040 1.090909 -0.2357004 -0.2357004
3 98 98.08081 1.181818 1.5326106 1.5326106
4 97 97.12121 1.272727 2.1873330 2.1873330
5 96 96.16162 1.363636 -0.6002596 -0.6002596
如果分组应该是分开的,我们可以使用
lappy
在“g”列上循环,分别应用aggregate
并将它们与cbind
nm1 <- paste0('g', 1:3)
out1 <- do.call(cbind, lapply(nm1, function(g) {
out <- do.call(data.frame, aggregate(s ~ ., df[c('s', g)],
FUN = function(x) c(mean(x), median(x))))
names(out)[-1] <- paste0(g, c('.x.mean', '.x.median'))
out}))
out1 <- out1[c(nm1, setdiff(names(out1), nm1))]
或者如
tidyverse
中所述,如果每个unique
组的数量不同,则可以使用ave
创建列,然后应用unique
out1 <- unique(cbind(df[nm1], do.call(cbind, lapply(nm1, function(g) {
mean <- with(df, ave(s, df[[g]]))
median <- with(df, ave(s, df[[g]], FUN = median))
setNames(data.frame(mean, median),
paste0(g, c('.x.mean', '.x.median')))
}))))
或者使用
tidyese
library(dplyr) # version >= 1.0
library(purrr)
library(stringr)
map_dfc(nm1, ~ df %>%
group_by(across(all_of(.x))) %>%
summarise(!! str_c(.x, ".x.mean") := mean(s),
!! str_c(.x, ".x.median") := median(s), .groups = 'drop')) %>%
select(all_of(nm1), everything())
-输出
head(out1)
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
#1 1 5.000000 1.000000 -0.56047565 -0.56047565 -0.56047565 -0.56047565 -1.0264209 -1.0264209
#2 2 5.959596 1.090909 -0.23017749 -0.23017749 -0.23017749 -0.23017749 -0.2357004 -0.2357004
#3 3 6.919192 1.181818 1.55870831 1.55870831 1.55870831 1.55870831 1.5326106 1.5326106
#4 4 7.878788 1.272727 0.07050839 0.07050839 0.07050839 0.07050839 2.1873330 2.1873330
#5 5 8.838384 1.363636 0.12928774 0.12928774 0.12928774 0.12928774 -0.6002596 -0.6002596
#6 6 9.797980 1.454545 1.71506499 1.71506499 1.71506499 1.71506499 1.3606524 1.3606524
head(out1)
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
#1 1 5.000000 10.000000 -0.56047565 -0.56047565 -0.56047565 -0.56047565 -0.56047565 -0.56047565
#2 2 5.959596 9.909091 -0.23017749 -0.23017749 -0.23017749 -0.23017749 -0.23017749 -0.23017749
#3 3 6.919192 9.818182 1.55870831 1.55870831 1.55870831 1.55870831 1.55870831 1.55870831
#4 4 7.878788 9.727273 0.07050839 0.07050839 0.07050839 0.07050839 0.07050839 0.07050839
#5 5 8.838384 9.636364 0.12928774 0.12928774 0.12928774 0.12928774 0.12928774 0.12928774
#6 6 9.797980 9.545455 1.71506499 1.71506499 1.71506499 1.71506499 1.71506499 1.71506499
# A tibble: 100 x 9
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 1 5 1 -0.560 -0.560 -0.560 -0.560 -1.03 -1.03
# 2 2 5.96 1.09 -0.230 -0.230 -0.230 -0.230 -0.236 -0.236
# 3 3 6.92 1.18 1.56 1.56 1.56 1.56 1.53 1.53
# 4 4 7.88 1.27 0.0705 0.0705 0.0705 0.0705 2.19 2.19
# 5 5 8.84 1.36 0.129 0.129 0.129 0.129 -0.600 -0.600
# 6 6 9.80 1.45 1.72 1.72 1.72 1.72 1.36 1.36
# 7 7 10.8 1.55 0.461 0.461 0.461 0.461 -0.628 -0.628
# 8 8 11.7 1.64 -1.27 -1.27 -1.27 -1.27 0.239 0.239
# 9 9 12.7 1.73 -0.687 -0.687 -0.687 -0.687 0.548 0.548
#10 10 13.6 1.82 -0.446 -0.446 -0.446 -0.446 0.994 0.994
# … with 90 more rows
# A tibble: 100 x 9
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 1 5 10 -0.560 -0.560 -0.560 -0.560 -0.560 -0.560
# 2 2 5.96 9.91 -0.230 -0.230 -0.230 -0.230 -0.230 -0.230
# 3 3 6.92 9.82 1.56 1.56 1.56 1.56 1.56 1.56
# 4 4 7.88 9.73 0.0705 0.0705 0.0705 0.0705 0.0705 0.0705
# 5 5 8.84 9.64 0.129 0.129 0.129 0.129 0.129 0.129
# 6 6 9.80 9.55 1.72 1.72 1.72 1.72 1.72 1.72
# 7 7 10.8 9.45 0.461 0.461 0.461 0.461 0.461 0.461
# 8 8 11.7 9.36 -1.27 -1.27 -1.27 -1.27 -1.27 -1.27
# 9 9 12.7 9.27 -0.687 -0.687 -0.687 -0.687 -0.687 -0.687
#10 10 13.6 9.18 -0.446 -0.446 -0.446 -0.446 -0.446 -0.446
# … with 90 more rows
-输出
head(out1)
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
#1 1 5.000000 1.000000 -0.56047565 -0.56047565 -0.56047565 -0.56047565 -1.0264209 -1.0264209
#2 2 5.959596 1.090909 -0.23017749 -0.23017749 -0.23017749 -0.23017749 -0.2357004 -0.2357004
#3 3 6.919192 1.181818 1.55870831 1.55870831 1.55870831 1.55870831 1.5326106 1.5326106
#4 4 7.878788 1.272727 0.07050839 0.07050839 0.07050839 0.07050839 2.1873330 2.1873330
#5 5 8.838384 1.363636 0.12928774 0.12928774 0.12928774 0.12928774 -0.6002596 -0.6002596
#6 6 9.797980 1.454545 1.71506499 1.71506499 1.71506499 1.71506499 1.3606524 1.3606524
head(out1)
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
#1 1 5.000000 10.000000 -0.56047565 -0.56047565 -0.56047565 -0.56047565 -0.56047565 -0.56047565
#2 2 5.959596 9.909091 -0.23017749 -0.23017749 -0.23017749 -0.23017749 -0.23017749 -0.23017749
#3 3 6.919192 9.818182 1.55870831 1.55870831 1.55870831 1.55870831 1.55870831 1.55870831
#4 4 7.878788 9.727273 0.07050839 0.07050839 0.07050839 0.07050839 0.07050839 0.07050839
#5 5 8.838384 9.636364 0.12928774 0.12928774 0.12928774 0.12928774 0.12928774 0.12928774
#6 6 9.797980 9.545455 1.71506499 1.71506499 1.71506499 1.71506499 1.71506499 1.71506499
# A tibble: 100 x 9
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 1 5 1 -0.560 -0.560 -0.560 -0.560 -1.03 -1.03
# 2 2 5.96 1.09 -0.230 -0.230 -0.230 -0.230 -0.236 -0.236
# 3 3 6.92 1.18 1.56 1.56 1.56 1.56 1.53 1.53
# 4 4 7.88 1.27 0.0705 0.0705 0.0705 0.0705 2.19 2.19
# 5 5 8.84 1.36 0.129 0.129 0.129 0.129 -0.600 -0.600
# 6 6 9.80 1.45 1.72 1.72 1.72 1.72 1.36 1.36
# 7 7 10.8 1.55 0.461 0.461 0.461 0.461 -0.628 -0.628
# 8 8 11.7 1.64 -1.27 -1.27 -1.27 -1.27 0.239 0.239
# 9 9 12.7 1.73 -0.687 -0.687 -0.687 -0.687 0.548 0.548
#10 10 13.6 1.82 -0.446 -0.446 -0.446 -0.446 0.994 0.994
# … with 90 more rows
# A tibble: 100 x 9
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 1 5 10 -0.560 -0.560 -0.560 -0.560 -0.560 -0.560
# 2 2 5.96 9.91 -0.230 -0.230 -0.230 -0.230 -0.230 -0.230
# 3 3 6.92 9.82 1.56 1.56 1.56 1.56 1.56 1.56
# 4 4 7.88 9.73 0.0705 0.0705 0.0705 0.0705 0.0705 0.0705
# 5 5 8.84 9.64 0.129 0.129 0.129 0.129 0.129 0.129
# 6 6 9.80 9.55 1.72 1.72 1.72 1.72 1.72 1.72
# 7 7 10.8 9.45 0.461 0.461 0.461 0.461 0.461 0.461
# 8 8 11.7 9.36 -1.27 -1.27 -1.27 -1.27 -1.27 -1.27
# 9 9 12.7 9.27 -0.687 -0.687 -0.687 -0.687 -0.687 -0.687
#10 10 13.6 9.18 -0.446 -0.446 -0.446 -0.446 -0.446 -0.446
# … with 90 more rows
#一个tible:100 x 9
#g1 g2 g3 g1.x.平均值g1.x.中值g2.x.平均值g2.x.中值g3.x.平均值g3.x.中值
#
# 1 1 5 10 -0.560 -0.560 -0.560 -0.560 -0.560 -0.560
# 2 2 5.96 9.91 -0.230 -0.230 -0.230 -0.230 -0.230 -0.230
# 3 3 6.92 9.82 1.56 1.56 1.56 1.56 1.56 1.56
# 4 4 7.88 9.73 0.0705 0.0705 0.0705 0.0705 0.0705 0.0705
# 5 5 8.84 9.64 0.129 0.129 0.129 0.129 0.129 0.129
# 6 6 9.80 9.55 1.72 1.72 1.72 1.72 1.72 1.72
# 7 7 10.8 9.45 0.461 0.461 0.461 0.461 0.461 0.461
# 8 8 11.7 9.36 -1.27 -1.27 -1.27 -1.27 -1.27 -1.27
# 9 9 12.7 9.27 -0.687 -0.687 -0.687 -0.687 -0.687 -0.687
#10 10 13.6 9.18 -0.446 -0.446 -0.446 -0.446 -0.446 -0.446
#…还有90行
如果分组应该是分开的,我们可以使用lappy
在“g”列上循环,分别应用聚合
,并将它们与cbind
nm1 <- paste0('g', 1:3)
out1 <- do.call(cbind, lapply(nm1, function(g) {
out <- do.call(data.frame, aggregate(s ~ ., df[c('s', g)],
FUN = function(x) c(mean(x), median(x))))
names(out)[-1] <- paste0(g, c('.x.mean', '.x.median'))
out}))
out1 <- out1[c(nm1, setdiff(names(out1), nm1))]
或者如
tidyverse
中所述,如果每个unique
组的数量不同,则可以使用ave
创建列,然后应用unique
out1 <- unique(cbind(df[nm1], do.call(cbind, lapply(nm1, function(g) {
mean <- with(df, ave(s, df[[g]]))
median <- with(df, ave(s, df[[g]], FUN = median))
setNames(data.frame(mean, median),
paste0(g, c('.x.mean', '.x.median')))
}))))
或者使用
tidyese
library(dplyr) # version >= 1.0
library(purrr)
library(stringr)
map_dfc(nm1, ~ df %>%
group_by(across(all_of(.x))) %>%
summarise(!! str_c(.x, ".x.mean") := mean(s),
!! str_c(.x, ".x.median") := median(s), .groups = 'drop')) %>%
select(all_of(nm1), everything())
-输出
head(out1)
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
#1 1 5.000000 1.000000 -0.56047565 -0.56047565 -0.56047565 -0.56047565 -1.0264209 -1.0264209
#2 2 5.959596 1.090909 -0.23017749 -0.23017749 -0.23017749 -0.23017749 -0.2357004 -0.2357004
#3 3 6.919192 1.181818 1.55870831 1.55870831 1.55870831 1.55870831 1.5326106 1.5326106
#4 4 7.878788 1.272727 0.07050839 0.07050839 0.07050839 0.07050839 2.1873330 2.1873330
#5 5 8.838384 1.363636 0.12928774 0.12928774 0.12928774 0.12928774 -0.6002596 -0.6002596
#6 6 9.797980 1.454545 1.71506499 1.71506499 1.71506499 1.71506499 1.3606524 1.3606524
head(out1)
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
#1 1 5.000000 10.000000 -0.56047565 -0.56047565 -0.56047565 -0.56047565 -0.56047565 -0.56047565
#2 2 5.959596 9.909091 -0.23017749 -0.23017749 -0.23017749 -0.23017749 -0.23017749 -0.23017749
#3 3 6.919192 9.818182 1.55870831 1.55870831 1.55870831 1.55870831 1.55870831 1.55870831
#4 4 7.878788 9.727273 0.07050839 0.07050839 0.07050839 0.07050839 0.07050839 0.07050839
#5 5 8.838384 9.636364 0.12928774 0.12928774 0.12928774 0.12928774 0.12928774 0.12928774
#6 6 9.797980 9.545455 1.71506499 1.71506499 1.71506499 1.71506499 1.71506499 1.71506499
# A tibble: 100 x 9
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 1 5 1 -0.560 -0.560 -0.560 -0.560 -1.03 -1.03
# 2 2 5.96 1.09 -0.230 -0.230 -0.230 -0.230 -0.236 -0.236
# 3 3 6.92 1.18 1.56 1.56 1.56 1.56 1.53 1.53
# 4 4 7.88 1.27 0.0705 0.0705 0.0705 0.0705 2.19 2.19
# 5 5 8.84 1.36 0.129 0.129 0.129 0.129 -0.600 -0.600
# 6 6 9.80 1.45 1.72 1.72 1.72 1.72 1.36 1.36
# 7 7 10.8 1.55 0.461 0.461 0.461 0.461 -0.628 -0.628
# 8 8 11.7 1.64 -1.27 -1.27 -1.27 -1.27 0.239 0.239
# 9 9 12.7 1.73 -0.687 -0.687 -0.687 -0.687 0.548 0.548
#10 10 13.6 1.82 -0.446 -0.446 -0.446 -0.446 0.994 0.994
# … with 90 more rows
# A tibble: 100 x 9
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 1 5 10 -0.560 -0.560 -0.560 -0.560 -0.560 -0.560
# 2 2 5.96 9.91 -0.230 -0.230 -0.230 -0.230 -0.230 -0.230
# 3 3 6.92 9.82 1.56 1.56 1.56 1.56 1.56 1.56
# 4 4 7.88 9.73 0.0705 0.0705 0.0705 0.0705 0.0705 0.0705
# 5 5 8.84 9.64 0.129 0.129 0.129 0.129 0.129 0.129
# 6 6 9.80 9.55 1.72 1.72 1.72 1.72 1.72 1.72
# 7 7 10.8 9.45 0.461 0.461 0.461 0.461 0.461 0.461
# 8 8 11.7 9.36 -1.27 -1.27 -1.27 -1.27 -1.27 -1.27
# 9 9 12.7 9.27 -0.687 -0.687 -0.687 -0.687 -0.687 -0.687
#10 10 13.6 9.18 -0.446 -0.446 -0.446 -0.446 -0.446 -0.446
# … with 90 more rows
-输出
head(out1)
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
#1 1 5.000000 1.000000 -0.56047565 -0.56047565 -0.56047565 -0.56047565 -1.0264209 -1.0264209
#2 2 5.959596 1.090909 -0.23017749 -0.23017749 -0.23017749 -0.23017749 -0.2357004 -0.2357004
#3 3 6.919192 1.181818 1.55870831 1.55870831 1.55870831 1.55870831 1.5326106 1.5326106
#4 4 7.878788 1.272727 0.07050839 0.07050839 0.07050839 0.07050839 2.1873330 2.1873330
#5 5 8.838384 1.363636 0.12928774 0.12928774 0.12928774 0.12928774 -0.6002596 -0.6002596
#6 6 9.797980 1.454545 1.71506499 1.71506499 1.71506499 1.71506499 1.3606524 1.3606524
head(out1)
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
#1 1 5.000000 10.000000 -0.56047565 -0.56047565 -0.56047565 -0.56047565 -0.56047565 -0.56047565
#2 2 5.959596 9.909091 -0.23017749 -0.23017749 -0.23017749 -0.23017749 -0.23017749 -0.23017749
#3 3 6.919192 9.818182 1.55870831 1.55870831 1.55870831 1.55870831 1.55870831 1.55870831
#4 4 7.878788 9.727273 0.07050839 0.07050839 0.07050839 0.07050839 0.07050839 0.07050839
#5 5 8.838384 9.636364 0.12928774 0.12928774 0.12928774 0.12928774 0.12928774 0.12928774
#6 6 9.797980 9.545455 1.71506499 1.71506499 1.71506499 1.71506499 1.71506499 1.71506499
# A tibble: 100 x 9
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 1 5 1 -0.560 -0.560 -0.560 -0.560 -1.03 -1.03
# 2 2 5.96 1.09 -0.230 -0.230 -0.230 -0.230 -0.236 -0.236
# 3 3 6.92 1.18 1.56 1.56 1.56 1.56 1.53 1.53
# 4 4 7.88 1.27 0.0705 0.0705 0.0705 0.0705 2.19 2.19
# 5 5 8.84 1.36 0.129 0.129 0.129 0.129 -0.600 -0.600
# 6 6 9.80 1.45 1.72 1.72 1.72 1.72 1.36 1.36
# 7 7 10.8 1.55 0.461 0.461 0.461 0.461 -0.628 -0.628
# 8 8 11.7 1.64 -1.27 -1.27 -1.27 -1.27 0.239 0.239
# 9 9 12.7 1.73 -0.687 -0.687 -0.687 -0.687 0.548 0.548
#10 10 13.6 1.82 -0.446 -0.446 -0.446 -0.446 0.994 0.994
# … with 90 more rows
# A tibble: 100 x 9
# g1 g2 g3 g1.x.mean g1.x.median g2.x.mean g2.x.median g3.x.mean g3.x.median
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 1 5 10 -0.560 -0.560 -0.560 -0.560 -0.560 -0.560
# 2 2 5.96 9.91 -0.230 -0.230 -0.230 -0.230 -0.230 -0.230
# 3 3 6.92 9.82 1.56 1.56 1.56 1.56 1.56 1.56
# 4 4 7.88 9.73 0.0705 0.0705 0.0705 0.0705 0.0705 0.0705
# 5 5 8.84 9.64 0.129 0.129 0.129 0.129 0.129 0.129
# 6 6 9.80 9.55 1.72 1.72 1.72 1.72 1.72 1.72
# 7 7 10.8 9.45 0.461 0.461 0.461 0.461 0.461 0.461
# 8 8 11.7 9.36 -1.27 -1.27 -1.27 -1.27 -1.27 -1.27
# 9 9 12.7 9.27 -0.687 -0.687 -0.687 -0.687 -0.687 -0.687
#10 10 13.6 9.18 -0.446 -0.446 -0.446 -0.446 -0.446 -0.446
# … with 90 more rows
#一个tible:100 x 9
#g1 g2 g3 g1.x.平均值g1.x.中值g2.x.平均值g2.x.中值g3.x.平均值g3.x.中值
#
# 1 1 5 10 -0.560 -0.560 -0.560 -0.560 -0.560 -0.560
# 2 2 5.96 9.91 -0.230 -0.230 -0.230 -0.230 -0.230 -0.230
# 3 3 6.92 9.82 1.56 1.56 1.56 1.56 1.56 1.56
# 4 4 7.88 9.73 0.0705 0.0705 0.0705 0.0705 0.0705 0.0705
# 5 5 8.84 9.64 0.129 0.129 0.129 0.129 0.129 0.129
# 6 6 9.80 9.55 1.72 1.72 1.72 1.72 1.72 1.72
# 7 7 10.8 9.45 0.461 0.461 0.461 0.461 0.461 0.461
# 8 8 11.7 9.36 -1.27 -1.27 -1.27 -1.27 -1.27 -1.27
# 9 9 12.7 9.27 -0.687 -0.687 -0.687 -0.687 -0.687 -0.687
#10 10 13.6 9.18 -0.446 -0.446 -0.446 -0.446 -0.446 -0.446
#…还有90行
也可以使用dplyr
:
library(dplyr)
#Code
new <- df %>% group_by(s) %>%
summarise_all(.funs = list("x.mean"=mean,"x.median"=median))
库(dplyr)
#代码
新%group_由%>%
总结所有内容(.funs=列表(“x.mean”=平均值,“x.median”=中值))
输出:
# A tibble: 100 x 7
s g1_x.mean g2_x.mean g3_x.mean g1_x.median g2_x.median g3_x.median
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 -2.31 72 73.1 3.55 72 73.1 3.55
2 -1.97 18 21.3 8.45 18 21.3 8.45
3 -1.69 26 29.0 7.73 26 29.0 7.73
4 -1.55 57 58.7 4.91 57 58.7 4.91
5 -1.27 43 45.3 6.18 43 45.3 6.18
6 -1.27 8 11.7 9.36 8 11.7 9.36
7 -1.22 78 78.9 3 78 78.9 3
8 -1.14 29 31.9 7.45 29 31.9 7.45
9 -1.12 46 48.2 5.91 46 48.2 5.91
10 -1.07 65 66.4 4.18 65 66.4 4.18
# ... with 90 more rows
#一个tible:100x7
s g1_x.平均g2_x.平均g3_x.平均g1_x.中值g2_x.中值g3_x.中值
1 -2.31 72 73.1 3.55 72 73.1 3.55
2 -1.97 18 21.3 8.45 18 21.3 8.45
3 -1.69 26 29.0 7.73 26 29.0 7.73
4 -1.55 57 58.7 4.91 57 58.7 4.91
5 -1.27 43 45.3 6.18 43 45.3 6.18
6 -1.27 8 11.7 9.36 8 11.7 9.36
7 -1.22 78 78.9 3 78 78.9 3
8 -1.14 29 31.9 7.45 29 31.9 7.45
9 -1.12 46 48.2 5.91 46 48.2 5.91
10 -1.07 65 66.4 4.18 65 66.4 4.18
# ... 还有90行
也可以使用dplyr
:
library(dplyr)
#Code
new <- df %>% group_by(s) %>%
summarise_all(.funs = list("x.mean"=mean,"x.median"=median))
库(dplyr)
#代码
新%group_由%>%
总结所有内容(.funs=列表(“x.mean”=平均值,“x.median”=中值))
输出:
# A tibble: 100 x 7
s g1_x.mean g2_x.mean g3_x.mean g1_x.median g2_x.median g3_x.median
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 -2.31 72 73.1 3.55 72 73.1 3.55
2 -1.97 18 21.3 8.45 18 21.3 8.45
3 -1.69 26 29.0 7.73 26 29.0 7.73
4 -1.55 57 58.7 4.91 57 58.7 4.91
5 -1.27 43 45.3 6.18 43 45.3 6.18
6 -1.27 8 11.7 9.36 8 11.7 9.36
7 -1.22 78 78.9 3 78 78.9 3
8 -1.14 29 31.9 7.45 29 31.9 7.45
9 -1.12 46 48.2 5.91 46 48.2 5.91
10 -1.07 65 66.4 4.18 65 66.4 4.18
# ... with 90 more rows
#一个tible:100x7
s g1_x.平均g2_x.平均g3_x.平均g1_x.中值g2_x.中值g3_x.中值
1 -2.31 72 73.1 3.55 72 73.1 3.55
2 -1.97 18 21.3 8.45 18 21.3 8.45
3 -1.69 26 29.0 7.73 26 29.0 7.73
4 -1.55 57 58.7 4.91 57 58.7 4.91
5 -1.27 43 45.3 6.18 43 45.3 6.18
6 -1.27 8 11.7 9.36 8 11.7 9.36
7 -1.22 78 78.9 3 78 78.9 3
8 -1.14 29 31.9 7.45 29 31.9 7.45
9 -1.12 46 48.2 5.91 46 48.2 5.91
10 -1.07 65 66.4 4.18 65 66.4 4.18
# ... 还有90行
怪我吧,这太明显了,但我还是感觉到了。谢谢对不起,这是误解,我现在得到了变量的平均值,中位数,但我想要平均值,每组g1,g2,g3的“s”中位数!好吧,但这给出了我在我的例子中已经提供的结果…@Maximilian我想你可能需要以不同的方式构建逻辑,因为这永远不会奏效。再次感谢!责怪我,虽然如此明显,但我还是感觉到了。谢谢抱歉,这是误解,我现在得到了变量的平均值,中位数,但我想要平均值,每个gro的“s”中位数