我正在使用RDS软件包作为被调查者驱动的抽样调查数据.我想把一个普通的R数据帧转换成一个rds.data.frame。为此,我一直在尝试使用来自RDS的as.rds.data.frame函数。
这里是我的数据框架的摘录部分,第一个案例(id=1)是“seed”应答者(没有招聘人员)。它包含变量: id (应答者id号)、recruit.id(招募他/她的应答者id号)、netsize (被访者网络大小)和人口(估计整个人口规模)。
df<-data.frame(id=c(1,2,3,4,5,6,7,8,9,10),
recruit.id=c(-1,1,1,2,2,4,5,3,8,3),
netsize=c(6,6,6,5,5,4,4,3,4,6), population=rep(22,000, 10))然后我(试着)应用相关的功能:
new.df <-as.rds.data.frame(df,id=df$id,
recruiter.id=df$recruit.id,
network.size=df$netsize,
population.size=df$population,
max.coupons=2)我得到了错误消息:
As.rds.data.frame中的错误(df,id = df$ id,recruiter.id = df$recruit.id,:无效id
以及警告
此外:警告消息: if (!(%name(X)中的id%))停止(“无效id"):条件长度>1,只使用第一个元素
我曾尝试为种子参与者分配各种“招聘人员id”值,包括-1,0或他们自己的id号,但我仍然收到相同的消息。我也尝试过删除函数参数(coupon.max,population)或删除种子应答者,但我仍然收到相同的消息。
软件包文档表示,如果招聘信息不完整,该功能将失败。据我所知,情况并非如此。
我是新来的,所以如果有人能为我指明正确的方向,我将非常感激。
发布于 2014-07-26 14:42:38
这似乎是可行的:
colnames(df)[2:4] <- c("recruiter.id", "network.size.variable", "population.size")
as.rds.data.frame(df,max.coupons=2)这会给出一个警告的结果。
as.rds.data.frame(df, id="id", recruiter.id="recruit.id",
network.size="netsize", population.size="population", max.coupons=2)
# An object of class "rds.data.frame"
#id: 1 2 3 4 5 6 7 8 9 10
#recruiter.id: -1 1 1 2 2 4 5 3 8 3
# id recruit.id netsize population
#1 1 -1 6 22
#2 2 1 6 22
#3 3 1 6 22
#4 4 2 5 22
#5 5 2 5 22
#6 6 4 4 22
#7 7 5 4 22
#8 8 3 3 22
#9 9 8 4 22
#10 10 3 6 22
# Warning message:
#In as.rds.data.frame(df, id = "id", recruiter.id = "recruit.id", :
#NAs introduced by coercionhttps://stackoverflow.com/questions/24972033
复制相似问题