簡體   English   中英

由 r 中的多列按組表示

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM