我的資料框是:
| M1T1 | M1T2 | M1T3 | M2T1 | M2T2 | M2T3 | M3T1 | M3T2 | M3T3 | cntry_lan | 管理員 |
|---|---|---|---|---|---|---|---|---|---|---|
| 不適用 | 不適用 | 不適用 | 1 | 2 | 2 | 1 | 1 | 2 | 攻擊者 | 組 1 |
| 7 | 6 | 5 | 不適用 | 不適用 | 不適用 | 6 | 6 | 5 | 攻擊者 | 組3 |
| 7 | 5 | 5 | 不適用 | 不適用 | 不適用 | 7 | 4 | 4 | 攻擊者 | 組2 |
我的代碼是:
mtmm_data1 %>%
group_by(cntry_lan) %>% group_by(admdw)
summarise_at(vars(M1MT1, M1T2, M1T3, M2T1, M2T2, M2T3, M3T1, M3T2, M3T3), list(name = mean))
我得到的錯誤:
UseMethod("tbl_vars") 中的錯誤:沒有適用于 'tbl_vars' 的方法應用于類“c('quosures', 'list')”的物件
每個count_lan 有三個組,即group1、group2 和group3。我想為每個國家/地區設定一行,然后為每個國家/地區設定三組,使所有列穩定。我不想創建新列,而是希望獲得相同列 M1T1-M3T3 的平均值。
uj5u.com熱心網友回復:
您需要的功能是aggregate,您可以這樣使用它:
aggregate(x=df[,c("M1T1","M1T2","M1T3","M2T1","M2T2","M2T3","M3T1","M3T2","M3T3")], #column on which you want to apply a function
by=list(country=df$country,grp=df$grp),#grouping variables
FUN=mean)#function to apply
df成為你的資料框
uj5u.com熱心網友回復:
df<-data.frame(cntry_lan = c("ATGER"),
admdw = c("group1", "group2", "group3"),
M1T1 = c(NA,1,2),
M1T2 = c(1,10,3),
M1T3 = c(10,NA,1))
library(tidyverse)
df %>%
rowwise() %>%
mutate(mean = mean(c_across(starts_with("M")), na.rm=T), .keep="unused") %>%
pivot_wider(names_from = admdw, values_from = mean)
# cntry_lan group1 group2 group3
# <chr> <dbl> <dbl> <dbl>
#1 ATGER 5.5 5.5 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/531257.html
標籤:r通过...分组
上一篇:歷年累計金額R
下一篇:使用dplyr和條件左連接
