R到Stata:使用变量标签导出数据框

时间:2013-05-17 15:44:48

标签: r variables labels stata

我在R中有一个数据集,我使用{Hmisc}包应用了变量标签。但是,当我将数据集导出到Stata时(使用{foreign}包中的write.dta函数),变量标签不会出现在Stata中。相反,变量名称也显示为变量标签。数据集包含如下变量:

X1 X2 X3

在Stata中,我希望变量具有与变量名相关联的变量标签:

X1"州" X2" PerCapita收入" X3"人口"

当然,如果我可以在Stata而不是R中应用标签,这将更容易,但我试图向仅使用R的研究人员提供代码。不幸的是,我需要将数据发送到数据存储库,这需要数据集文件格式为Stata。

我尝试修改此处提供的代码:information from `label attribute` in R to `VARIABLE LABELS` in SPSS。它没有用。

这是我生成变量标签的方式:

library(Hmisc)
label(data[,1]) <- "State"
label(data[,2]) <- "Per Capita Income"
label(data[,3]) <- "Population"

要导出到Stata,我使用了这个:

library(foreign)
write.dta(data,file="C:/Users/Me/Desktop/data.dta")

基于另一篇文章,我试图制作变量标签&#34;坚持&#34;:

df<-data
get.var.labels <- function(data){
a<-do.call(llist,data)
tempout<-vector("list",length(a))
for (i in 1:length(a)){
tempout[[i]]<-label(a[[i]])
}
b<-unlist(tempout)
structure(c(b),.Names=names(data))
}
attributes(df)$variable.labels=get.var.labels(df)

该代码是为了导出到SPSS编写的,所以我没想到它会起作用。尽管如此,我仍然希望我能找到类似于Stata的相同内容。

非常感谢任何帮助!!

顺便说一下,数据框确实有列名,但我希望它们对于数据管理的目的更具描述性。同时,我想保留原始列名(基本上是X1,X2,X3),以便研究人员可以继续以这种方式引用变量。

2 个答案:

答案 0 :(得分:2)

您可以使用

功能
  

write.dta

来自包

  

外国

处理这个问题。但首先,您必须为数据集添加一个属性,如下所示:

attr(data, "var.labels") <- c("State", "Per Capita Income","Population")

然后导出数据集:

write.dta(data, file="mydata.dta")

就是这样! 它对我有用,我希望你会这样。

答案 1 :(得分:1)

write.dta帮助页面:“如果”val.labels“属性包含每个变量带有字符串标签的字符串向量,则将其写为变量标签。否则变量名称将作为变量重复标签。”所以我会尝试:

write.dta(data,file="C:/Users/Me/Desktop/data.dta", 
             val.labels=c( "State", "Per Capita Income", "Population") )