使用RDS包转换R数据框:招募ID错误?

时间:2014-07-26 14:27:57

标签: r survey

我正在使用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)或删除种子响应者,但我仍然得到相同的信息。

包裹文件说如果招聘信息不完整,该功能将失败。据我所知,事实并非如此。

我是新手,所以如果有人能指出我正确的方向,我会非常感激。

1 个答案:

答案 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