我有一个由许多变量组成的全国调查,就像这个(为了简单起见,我省略了一些变量):
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/