我正在学习R,我向你保证我已经高低搜索了这个答案。这很简单,但出于某种原因,我无法理解我的生活!
我有一个包含一个数字向量和两个因子的数据框:
team.weight <- c(150,160,120,100) # player's weight
team.jersey <- factor(c("blue", "green", "blue", "blue")) # player's jersey color
team.sex <- factor(c("male", "female", "female", "male")) # player's sex
team <- data.frame(team.jersey, team.sex, team.weight)
我想显示一个表(我忘记它叫什么),它显示了所有玩家的平均权重,即两个因子表的每个级别组合的平均值(team.weight)。
我可以手动完成,但必须有更好的方法!
mean(team.weight[c(team.jersey[1],team.sex[1])])
mean(team.weight[c(team.jersey[1],team.sex[2])])
mean(team.weight[c(team.jersey[1],team.sex[3])])
mean(team.weight[c(team.jersey[1],team.sex[4])])
mean(team.weight[c(team.jersey[2],team.sex[1])])
mean(team.weight[c(team.jersey[2],team.sex[2])])
mean(team.weight[c(team.jersey[2],team.sex[3])])
mean(team.weight[c(team.jersey[2],team.sex[4])])
mean(team.weight[c(team.jersey[3],team.sex[1])])
mean(team.weight[c(team.jersey[3],team.sex[2])])
mean(team.weight[c(team.jersey[3],team.sex[3])])
mean(team.weight[c(team.jersey[3],team.sex[4])])
mean(team.weight[c(team.jersey[4],team.sex[1])])
mean(team.weight[c(team.jersey[4],team.sex[2])])
mean(team.weight[c(team.jersey[4],team.sex[3])])
mean(team.weight[c(team.jersey[4],team.sex[4])])
非常感谢任何帮助。我知道答案是愚蠢的,但我无法理解它是什么。
答案 0 :(得分:3)
tapply(team.weight, list(team$team.jersey, team$team.sex), mean)
# female male
# blue 120 125
# green 160 NA
答案 1 :(得分:2)
以下是plyr
示例:
> library(plyr)
> ddply(team,.(team.jersey,team.sex),summarize,avgWeight=mean(team.weight))
team.jersey team.sex avgWeight
1 blue female 120
2 blue male 125
3 green female 160