【发布时间】:2018-07-03 07:10:30
【问题描述】:
假设我有一些人口统计数据
demographic.data <- data.frame(nation=c('us', 'us', 'us', 'us', 'us', 'china', 'china', 'china'),
religion=c('christ', 'budhist', 'christ', 'jew', 'jew', 'christ', 'budhist', 'budhist'))
# nation religion
#1 us christ
#2 us budhist
#3 us christ
#4 us jew
#5 us jew
#6 china christ
#7 china budhist
#8 china budhist
我想计算每个国家内宗教的质量函数。所以我可以做类似group_by()国家的事情,然后由一堆sum()s聚合。
religion.distributions <- demographic.data %>%
group_by(nation) %>%
summarise(n = n(),
christ = sum(religion == 'christ'),
jew = sum(religion == 'jew'),
budhist = sum(religion == 'budhist'))
# nation n christ jew budhist
#
#1 china 3 1 0 2
#2 us 5 2 2 1
虽然这会为这些数据产生正确的结果,但问题是我需要对我想要总结的宗教进行硬编码。如果数据中出现任何新的宗教,这将是一个问题。
有没有办法自动为每个组中的每个宗教的计数设置列?它应该能够查看religion 列中所有可能的值并开始计算它们。使用dplyr 管道的解决方案将是最优雅的。
【问题讨论】: