【发布时间】:2017-06-16 09:56:46
【问题描述】:
伙计们,我需要一种优雅的方式来创建频率计数并按多个变量分组。输出应该是一个数据框。我知道答案在于使用我仍在学习的 dplyr 和 data.table 。 我试过这个link,但我想使用 dplyr 和 data.table 来做到这一点。
这是来自同一链接的示例数据 -
ID <- seq(1:177)
Age <- sample(c("0-15", "16-29", "30-44", "45-64", "65+"), 177, replace = TRUE)
Sex <- sample(c("Male", "Female"), 177, replace = TRUE)
Country <- sample(c("England", "Wales", "Scotland", "N. Ireland"), 177, replace = TRUE)
Health <- sample(c("Poor", "Average", "Good"), 177, replace = TRUE)
Survey <- data.frame(Age, Sex, Country, Health)
这是我正在寻找的输出。感谢并感谢您的帮助!
【问题讨论】:
-
我也可以在数据框中没有总计,但我不想输入实际因子水平作为 akrun 建议的代码的一部分 - “[, Total := Average + 好 + 差][]"
-
library(tidyverse); Survey %>% count(Age, Sex, Health) %>% spread(Health, n, fill = 0) -
感谢 alistaire...tidyverse 看起来不错!....它是否还允许像您在“spread(Health,....)”中所做的那样通过指定来计算不同的、平均的和求和的功能n?
-
当然。
count确实是group_by(...) %>% summarise(n = n())的快捷方式,但你可以指定任何你喜欢的东西。 Hadley 的R for Data Science 是一个很好的起点。 -
我挑战关闭。这要求对三向表进行“平面”表示,这种东西由处理多向列联表的基本 ftable 函数提供。
标签: r count data.table dplyr frequency