我正在使用RDS软件包进行受访者驱动的抽样调查数据。我想将常规R数据帧转换为rds.data.frame。为此,我一直在尝试使用RDS中的as.rds.data.frame函数。
以下是我的数据框的摘录部分,其中第一个案例(id = 1)是“种子”受访者(没有招聘人员)。它包含变量: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 in%names(x)))stop(“无效id”): 条件的长度> 1,只使用第一个元素
我尝试为种子参与者分配各种'招募者ID'值,包括-1,0或他们自己的身份证号码,但我仍然得到相同的消息。我也试过删除函数参数(coupon.max,population)或删除种子响应者,但我仍然得到相同的信息。
包裹文件说如果招聘信息不完整,该功能将失败。据我所知,事实并非如此。
我是新手,所以如果有人能指出我正确的方向,我会非常感激。
答案 0 :(得分:1)
这似乎有效:
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 coercion