use*_*406 6 variables r labels stata
我在R中有一个数据集,我使用{Hmisc}包来应用变量标签.但是,当我将数据集导出到Stata时(使用{foreign}包中的write.dta函数),变量标签不会出现在Stata中.相反,变量名称也显示为变量标签.数据集包含如下变量:
X1 X2 X3
在Stata中,我希望变量具有与变量名相关联的变量标签,如下所示:
X1"国家"X2"PerCapita收入"X3"人口"
当然,如果我可以在Stata而不是R中应用标签,这将更容易,但我正在尝试为仅使用R的研究人员提供代码.不幸的是,我需要将数据发送到数据存储库,这需要数据集文件格式为Stata.
我试图修改这里提供的代码:从R中的`label attribute`到SPSS中的`VARIABLE LABELS`的信息.它没用.
这就是我生成变量标签的方式:
library(Hmisc)
label(data[,1]) <- "State"
label(data[,2]) <- "Per Capita Income"
label(data[,3]) <- "Population"
Run Code Online (Sandbox Code Playgroud)
要导出到Stata,我使用了这个:
library(foreign)
write.dta(data,file="C:/Users/Me/Desktop/data.dta")
Run Code Online (Sandbox Code Playgroud)
基于另一篇文章,我试着让变量标签"粘住":
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)
Run Code Online (Sandbox Code Playgroud)
该代码是为了导出到SPSS编写的,所以我没想到它会起作用.尽管如此,我希望我可以找到类似的东西来为Stata做同样的事情.
任何帮助将不胜感激!!
顺便说一下,数据框确实有列名,但我希望它们对于数据管理的目的更具描述性.同时,我想保留原始列名(基本上是X1,X2,X3),以便研究人员可以继续以这种方式引用变量.
从write.dta帮助页面:“如果“val.labels”属性包含一个字符串向量,每个变量都有一个字符串标签,那么这将被写为变量标签。否则变量名称将作为变量标签重复。” 所以我会尝试:
write.dta(data,file="C:/Users/Me/Desktop/data.dta",
val.labels=c( "State", "Per Capita Income", "Population") )
Run Code Online (Sandbox Code Playgroud)