问题过滤案例以及将 svytable 与 R 一起使用

问题描述 投票:0回答:1

我是 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”的任何组合来做到这一点......我很确定解决方案非常简单,但我找不到它。

r filter subset survey
1个回答
0
投票

这对我有用= svytable((~变量1+变量3),ObjectSurvey[DataFrame$Variable3==ValueX])

© www.soinside.com 2019 - 2024. All rights reserved.