Как преобразовать "svyrep.design" 'в data.frame? - PullRequest
1 голос
/ 08 апреля 2019

Я бы хотел преобразовать объект svyrep.design / survey.design в R во фрейм данных. Я знаю, что этот объект будет довольно большим.

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".

1 Ответ

1 голос
/ 24 апреля 2019

я думаю, ты собираешься сделать что-то подобное? ваш пример имеет десятичные точки в весах, но вы не можете иметь половину записи. в конечном результате 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 )
...