将变量标签保存在R中,以便STATA可以读取它们

问题描述 投票:0回答:2

我有一个数据集,包含超过170个变量,如下所示:

df <- data.frame(var1 = 1:3, var2 = 2:4, var3 = 2:4, var4 = 2:4, var5 = 2:4)

我已经使用Hmisc手动添加了变量值:

library(Hmisc)
var.labels = c(var1 = "label 1",
               var3 = "label 2",
               var4="label 4" )
label(df) = as.list(var.labels[match(names(df), names(var.labels))])              

请注意,并非所有变量都具有标签,并且对于我来说,通过名称(var*)指定变量标签要容易得多,而不是给定大量列的位置。

问题是,当我使用write.csv(df,"df.csv")write.dta(df,"df.dta")保存数据集时,变量标签会​​丢失。

如何保存已还原标签的数据,然后将其重新导入到R和Stata中?

r label stata data-management
2个回答
1
投票

有点棘手。您需要标记所有变量。如果不想标记变量,则可能仍需要放置variable = ""。否则,write.dta将忽略所有变量标签。

R

df <- data.frame(var1 = 1:3, var2 = 2:4, var3 = 2:4, var4 = 2:4, var5 = 2:4)
attr(df, "var.labels") <- c(var1 = "label 1", var2 = "label 2", 
              var3 = "", var4="label 4", var5 = "")
foreign::write.dta(df, "dat_stata.dta")

Stata中,您得到:

. des

Contains data from C:...dat_stata.dta
  obs:             3                          Written by R.              
 vars:             5                          
 size:            60                          
------------------------------------------------------------------------------------------------------
              storage   display    value
variable name   type    format     label      variable label
------------------------------------------------------------------------------------------------------
var1            long    %9.0g                 label 1
var2            long    %9.0g                 label 2
var3            long    %9.0g                 
var4            long    %9.0g                 label 4
var5            long    %9.0g                 
------------------------------------------------------------------------------------------------------
Sorted by: 

[请注意:我使用了Stata 14Rforeign


0
投票

您可以将数据框的名称设置为可用的那些标签:

colnames(df)[which(!is.na(label(df)))]<-as.character(label(df)[which(!is.na(label(df)))])
© www.soinside.com 2019 - 2024. All rights reserved.