r 中的频率表和按多个变量分组

Jen*_*fer 3 r frequency count dplyr data.table

各位,我需要一种优雅的方式来创建频率计数并按多个变量进行分组。输出应该是一个数据框。我知道答案就在于使用我仍在学习的 dplyr 和 data.table 中。我尝试了此链接,但我想使用 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)
Run Code Online (Sandbox Code Playgroud)

这是我正在寻找的输出。感谢并感谢您的帮助!

在此输入图像描述

akr*_*run 5

我们可以使用dcast来自data.table

library(data.table)
dcast(setDT(Survey), Age + Sex ~Health, value.var = "Country",
                   length)[, Total := Average + Good + Poor][]
Run Code Online (Sandbox Code Playgroud)

如果我们不想输入列名,请使用Reducewith+

dcast(setDT(Survey), Age + Sex ~Health, value.var = "Country",
                length)[, Total := Reduce(`+`, .SD), .SDcols = Average:Poor][]
Run Code Online (Sandbox Code Playgroud)