r - 如何轻松生成多个具有两个以上变量的加权交叉表?
问题描述
我有一个大型调查,我需要为问卷中的所有项目生成一组表格,按城市/位置和一组人口统计变量交叉表。即在每个城市中,我想找到每个人口对给定问题的回答比例。我需要这些在每个城市的人口统计中总和为 1。数据是分类数据和数值数据的混合。这给出了数据是什么样子的一些想法,包括每个观察的权重:
library(dplyr)
n = 30
df <- data.frame(city = sample(c("New York", "Chicago", "Boston"), n, replace = TRUE),
gender = sample(c("Male", "Female"), n, replace = TRUE),
religion = sample(c("Protestant", "Catholic", "Jewish"), n, replace = TRUE),
weights = runif(n, min = 0.1, max = 2.0),
q1 = sample(c("good", "bad", "okay"), n, replace = TRUE),
q2 = sample(c("always", "sometimes", "never"), n, replace = TRUE),
q3 = sample(c(1:6), n, replace = TRUE))
我知道应该有某种方法可以使用 内的加权计数和比例来做到这一点dplyr
,但运气不佳。使用for
循环wtd.table
不起作用,因为它一次只允许两个变量。非常感谢有关如何使用多个交叉变量轻松将许多加权比例制成表格的任何建议。
df %>%
group_by(city, religion, gender) %>%
count(names(df)[5:7], wt = weights) %>%
summarise(weighted.mean())
解决方案
推荐阅读
- firebase - 使用 Dart 的 Firebase 实时数据库日期字符串范围
- reactjs - 部署的 Gatsby + Netlify 站点在刷新除主页之外的任何页面时都会触发空白页面。不会在本地发生
- soa-suite - Oracle SOA 套件快速入门 12.2.1.3.0
- ios - 更新到 iOS 14 和 Xcode 12 后应用启动时间变慢
- c# - 当 j 是 i 的函数时,R 中嵌套 for 循环的语法
- qlikview - 具有变量的 Qlik 视图表字段表达式不起作用
- javascript - 如何在 CBC 模式和 PKCS7 填充中解码使用 AES-256 加密的数据?
- android - 自动化 Android 应用程序,如 puppeteer 自动化 Web 应用程序
- python - Python 中 ggplot 的 geom_bar() 将所有条形显示为具有统一的高度
- php - Laravel 集合 - 与 whereHas 等价的 belongsToMany 关系中的条件