我有一个由许多变量组成的全国调查,就像这个(为了简单起见,我省略了一些变量):

year  id  y.b   sex   income  married   pens   weight
2002  1   1950   F    100000     1       0      1.12
2002  2   1943   M    55000      1       1      0.55
2004  1   1950   F    88000      1       1      1.1
2004  2   1943   M    66000      1       1      0.6
2006  3   1966   M    12000      0       1      0.23
2008  3   1966   M    24000      0       1      0.23
2008  4   1972   F    33000      1       0      0.66
2010  4   1972   F    35000      1       0      0.67

其中 id 是受访者,y.b 是出生年份,已婚是一个假人(1 个已婚,0 个单例),pens 是一个假人,如果此人投资于补充养老金形式,则取值为 1;权重是调查权重。

考虑到原始调查是由 2002 年到 2014 年的多达 40k 次观察组成的(我对其进行了过滤,以便只有出现超过一次的个体)。我使用这个命令来创建一个调查对象:
d.s <- svydesign(ids=~1, data=df, weights=~weight)

既然 df 是加权的,我想找到例如女性或已婚人士投资补充养老金的百分比;我在 R 帮助和网络上阅读以找到获取百分比的命令,但我没有找到正确的命令。

最佳答案

# same setup
library(survey)

df <- data.frame(sex = c('F', 'M', 'F', 'M', 'M', 'M', 'F', 'F'),
                married = c(1,1,1,1,0,0,1,1),
                pens = c(0, 1, 1, 1, 1, 1, 0, 0),
                weight = c(1.12, 0.55, 1.1, 0.6, 0.23, 0.23, 0.66, 0.67))

d.s <- svydesign(ids=~1, data=df, weights=~weight)

# subset to women only then calculate the share with a pension
svymean( ~ pens , subset( d.s , sex == 'F' ) )

关于r - 计算调查对象中某个值的百分比/频率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39898265/

10-13 02:57