如何将 "svyrep.design"' 转换为 data.frame?

How to convert "svyrep.design"’ to a data.frame?

我想将 R 中的 svyrep.design / survey.design 对象转换为数据框。我知道这个对象会很大。

library(survey)
data(api)   # loads "apiclus2" sample data
dclus2 <- svydesign(id=~dnum+snum, weights=~pw, data=apiclus2)

上面对一个数据框应用了权重,把它变成了一个调查对象。

dclus2  =  as.data.frame(dclus2)

错误信息:

# Error in as.data.frame.default(dclus2) : 
# cannot coerce class ‘c("survey.design2", "survey.design")’ to a data.frame`

我想将其重新转换为数据框,并将权重应用到对象。但是正如您在上面看到的,这是不可能通过 "as.data.frame".

我想你想做这样的事情?你的例子在权重中有小数点,但你不能有一半的记录。在最终结果 x data.frame 中,记录数等于原始调查 data.frame 的四舍五入权重之和。当你进行这种转换时,最终数据集对不确定性的估计没有用

library(survey)
data(api)
apiclus2$rounded_weights <- round( apiclus2$pw )
x <- apiclus2[ unlist( mapply( rep , seq( nrow( apiclus2 ) ) , apiclus2$rounded_weights ) ) , ]
sum( apiclus2$rounded_weights ) == nrow( x )