[英]Mean by groups by multiple columns in r
我有下一個數據框
obs1 obs2 obs3 zone
1 0 1 Rural
1 1 1 Rural
0 1 1 Urban
1 0 0 Urban
0 1 0 Rural
我想得到這樣的東西
Mean Rural 0.6666
Mean Urban 0.5
那可能嗎?
你可以試試:
aggregate(values ~ zone, cbind(stack(df[-4]), df[4]), mean)
zone values
1 Rural 0.6666667
2 Urban 0.5000000
或者(假設沒有缺失值):
tapply(rowMeans(df[-4]), df[4], mean)
Rural Urban
0.6666667 0.5000000
添加 {dplyr} 方法:
library(dplyr)
dat %>%
group_by(zone) %>%
summarise(values = mean(c_across(obs1:obs3)))
#> # A tibble: 2 x 2
#> zone values
#> <chr> <dbl>
#> 1 Rural 0.667
#> 2 Urban 0.5
# data
dat <- tibble(obs1 = c(1,1,0,1,0),
obs2 = c(0,1,1,0,1),
obs3 = c(1,1,1,0,0),
zone = c("Rural", "Rural", "Urban", "Urban", "Rural"))
由reprex 包於 2022-05-24 創建 (v2.0.1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.