快速提问,如何使用dplyr
计算组权重?
例如,给定数据:
D = data.frame(cat=rep(LETTERS[1:2], each=2), val=1:4)
# cat val
# 1 A 1
# 2 A 2
# 3 B 3
# 4 B 4
期望的结果是:
# cat weight
# 1 A 0.3 # (1+2)/10
# 2 B 0.7 # (3+4)/10
以下内容是否更加简洁明了?
还有比以下内容更加简洁的吗?
D %>%
mutate(total=sum(val)) %>%
group_by(cat) %>%
summarise(weight=sum(val/total))
D%>%group_by(cat) %>% summarise(weight=sum(val)/sum(D[,2]))
,但不如您的代码优雅。 - akrunprop.table(xtabs(val ~ cat, D))
。注:此代码用于计算数据框"D"中按类别("cat")汇总的频率表,并计算每个类别的比例。 - A5C1D2H2I1M1N2O1R2T1as.data.table(D)[, list(val = sum(val)/sum(D$val)), by = cat]
。 - A5C1D2H2I1M1N2O1R2T1