首页 > 解决方案 > 如何轻松生成多个具有两个以上变量的加权交叉表?

问题描述

我有一个大型调查,我需要为问卷中的所有项目生成一组表格,按城市/位置和一组人口统计变量交叉表。即在每个城市中,我想找到每个人口对给定问题的回答比例。我需要这些在每个城市的人口统计中总和为 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())

标签: rsurvey

解决方案


推荐阅读