使用R中的read.dta不推荐使用级别警告

时间:2017-01-07 03:13:23

标签: r warnings

(这是一个初学者问题,但我在其他地方找不到答案。相关帖子包括this onethis onethis one,但不知道如何申请这些对我而言。)

当我使用read.dta将STATA格式数据导入R时,会出现警告:

> lca <- read.dta("trial.dta")

Warning message:
In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else 
paste0(labels,  :
  duplicated levels in factors are deprecated

它只是意味着变量(&#34;因素&#34;在R中)包含重复值?如果是这样,为什么这甚至是一个警告 - 这是大多数变量的预期?

1 个答案:

答案 0 :(得分:0)

试试这个:

don <- read.dta("trial.dta",convert.dates = T,convert.factors = F)
for(i in 1:ncol(don)){
    valuelabel<-attributes(don)[[6]][i]
    if(valuelabel!=""){
       label<-paste("names(attributes(don)[[11]]$",valuelabel,")",sep="")
       level<-paste("attributes(don)[[11]]$",valuelabel,sep="")
       labels=(eval(parse(text=label)))
       levels=(eval(parse(text=level)))
       if(sum(duplicated(labels)) > 0){
          doublon<-which(duplicated(labels))
          remplace<-levels[doublon]
          valueremplace<-levels[unique(labels)==names(remplace)]
          don[don[,i]%in%remplace,i]<-valueremplace
          labels<-unique(labels)
          levels<-levels[labels]
       }
    don[,i]<-factor(don[,i],levels=levels,labels=labels)
  }
}