【发布时间】:2016-06-14 13:06:46
【问题描述】:
我有一个我想总结的数据框,使用 dplyr。在数据框中有多个因素,我想报告每个组汇总的每个因素级别的计数。
有没有一种方法可以使用 dplyr 执行以下操作,而不必在汇总语句中命名每个因子级别。
库(dplyr)
set.seed(123)
s <- rbinom(100,1,0.5)
s <- factor(s,0:1,c('M','F'))
a <- sample(1:4,100,TRUE)
a <- factor(a,1:4,c('oldest','old','young','youngest'))
w <- rnorm(100,40,10)
g <- rep(1:2,each=50)
df <- data.frame(sex=s, age=a, weight=w, group=g)
sm <- df %>% group_by(group) %>% summarise(
male = sum(ifelse(sex=='M',1,0))
,female = sum(ifelse(sex=='F',1,0))
,youngest = sum(ifelse(age=='youngest',1,0))
,young = sum(ifelse(age=='young',1,0))
,old = sum(ifelse(age=='old',1,0))
,oldest = sum(ifelse(age=='oldest',1,0))
,weight = mean(weight)
)
print(t(sm))
结果:
[,1] [,2]
group 1.000 2.00000
male 29.000 24.00000
female 21.000 26.00000
youngest 12.000 8.00000
young 13.000 17.00000
old 12.000 18.00000
oldest 13.000 7.00000
weight 37.461 40.38807
【问题讨论】:
-
第二行的
x是什么? -
你可以避开
ifelse,直接在逻辑向量上做sum -
x 是一个错字,应该改...