如何将 "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 )
我想将 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 )