我是 R 新手(最近来自 SPSS),我很难找到这个问题的解决方案。
我正在使用的数据集包含来自 3000 多人的近 300 个变量,并且它包含了我无法显示的有关健康的受保护信息:/
这只是其中很小的一部分(我不确定它是否真的有帮助):
structure(list(SEXO = structure(c(1L, 2L, 1L, 2L, 2L, 1L, 1L,
1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L), .Label = c("Mujer",
"Hombre"), class = "factor"), UNIC_6m = structure(c(1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L), .Label = c("Sí", "No"), class = "factor"), UN_sumaAC_R = c(0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), UN_sumaDC_R = c(1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1)), row.names = c(NA,
20L), class = "data.frame")
使用 svytable 我可以获得变量 UN_sumaAC_R 的加权频率
round(addmargins(svytable(~UN_sumaAC_R, design = f_design)),0)
UN_sumaAC_R
0 1 10 100 Sum
14 264 2 5 284
我也可以得到比例...
round(100*prop.table(svytable(~UN_sumaAC_R, design = f_design)),2)
UN_sumaAC_R
0 1 10 100
4.77 92.88 0.75 1.59
当我尝试仅获取 UN_sumaAC_R 级别 1、10 和 100(并删除 0)的比例时,问题就出现了。我可以使用以下代码使用未加权的数据来完成此操作:
100*prop.table(table(
f %>%
select(UN_sumaAC_R) %>%
subset(f$UN_sumaAC_R >0)
))
1 10 100
97.250859 1.030928 1.718213
但是我无法使用“filter”,“subset”和“svytable”的任何组合来做到这一点......我很确定解决方案非常简单,但我找不到它。
这对我有用= svytable((~变量1+变量3),ObjectSurvey[DataFrame$Variable3==ValueX])