在R中使用Stata变量标签

Jar*_*red 16 variables r labels stata

我有一堆Stata .dta文件,我想在R中使用.

我的问题是变量名对我没有帮助,因为它们就像"q0100","q0565","q0500"和"q0202".然而,它们被标记为"psu","怀孕的数量","户主"和"航点".

我希望能够抓住标签("psu","航点"等等),并将它们用作我的变量/列名称,因为这些更容易让我使用.

有没有办法做到这一点,最好是在R中,还是通过Stata本身?我知道库(外国)中的read.dta,但不知道它是否可以将标签转换为变量名.

Ian*_*ows 23

R没有内置的方法来处理变量标签.我个人认为这是应该修复的缺点.Hmisc确实为hadling变量标签提供了一些便利,但标签只能被该包中的函数识别.read.dta创建一个data.frame,其属性为"var.labels",其中包含标签信息.然后,您可以从中创建数据字典.

> data(swiss)
> write.dta(swiss,swissfile <- tempfile())
> a <- read.dta(swissfile)
> 
> var.labels <- attr(a,"var.labels")
> 
> data.key <- data.frame(var.name=names(a),var.labels)
> data.key
          var.name       var.labels
1        Fertility        Fertility
2      Agriculture      Agriculture
3      Examination      Examination
4        Education        Education
5         Catholic         Catholic
6 Infant_Mortality Infant.Mortality
Run Code Online (Sandbox Code Playgroud)

当然这个.dta文件没有非常有趣的标签,但你的标签应该更有意义.


Bas*_*ast 7

我建议您使用新的避风套餐(GitHub)来导入数据.

正如Hadley WickhamREADME.md文件中提到的那样:

总是得到一个数据框,日期时间转换为相应的R类,标记的向量作为新的标记类返回.您可以根据需要轻松强制使用因子或替换带有缺失的标记值.如果您还使用dplyr,您会注意到以方便的方式打印大型数据框.

(强调我的)

如果使用RStudio,它将自动在View("data.frame")查看器窗格()中以变​​量名称显示标签.

变量标签作为属性附加到每个变量.这些不打印(因为它们往往很长),但如果您有RStudio的预览版本,您将在修改后的查看器窗格中看到它们.

您可以使用以下命令安装包:

install.packages("haven")
Run Code Online (Sandbox Code Playgroud)

并使用以下方法导入您的Stata日期:

read_dta("path/to/file")
Run Code Online (Sandbox Code Playgroud)

有关详情,请参阅:

help("read_dta")
Run Code Online (Sandbox Code Playgroud)

  • 这是正确答案。这个功能令人难以置信。 (2认同)