7

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

X1 X2 X3

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

X1 “州” X2 “人均收入” X3 “人口”

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

我尝试修改此处提供的代码:从 R 中的“标签属性”到 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")

根据另一篇文章,我尝试这样做以使变量标签“粘贴”:

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),以便研究人员可以继续以这种方式引用变量。

4

2 回答 2

3

您可以使用该功能

写.dta

从包

外国的

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

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

然后导出您的数据集:

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

这就对了!它对我有用,我希望它对你有用。

于 2015-02-25T10:56:04.313 回答
1

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

write.dta(data,file="C:/Users/Me/Desktop/data.dta", 
             val.labels=c( "State", "Per Capita Income", "Population") )
于 2013-11-27T23:33:43.947 回答