【问题标题】:R: add labels to .dta files using `haven`R:使用 `haven` 为 .dta 文件添加标签
【发布时间】:2021-01-07 17:57:44
【问题描述】:

我在我的项目中同时使用 Stata 和 R,我想在 R 中标记变量,以便 Stata 正确读取它们。

以以下数据库为例,其中包含在 Stata 中正确标记的 12 个变量

* these are Stata commands
sysuse auto
save sysuseauto.dta

我可以将数据导入R

# import
library(haven)
library(data.table)
auto<-read_dta("sysuseauto.dta")

请注意,R 维护 Stata 中指定的所有变量标签。 我想在 R 中创建一个新变量

# Creating a new variable
sapply(auto,class)
auto<-setDT(auto)[,n_cars_by_foreign:=.N,by=.(foreign)]

并标记它,以便当我在 Stata 中打开新数据时,它被正确标记。

但是,我无法标记变量以便 Stata 读取它。 我已经尝试了以下

attr(auto, "haven_labelled") <- c(n_cars_by_foreign = "Number of cars by foreign")
write_dta(auto, "sysuseauto2.dta")
# and 
attr(auto, "var.labels") <- c(n_cars_by_foreign = "Number of cars by foreign")
write_dta(auto, "sysuseauto3.dta")

但是,不仅标签没有出现使用View(data)的变量名,而且当我将sysuseauto2.dtasysuseauto3.dta导入Stata时,新变量也没有正确标记。

有人知道如何解决这个问题吗?

非常感谢您的帮助

【问题讨论】:

  • 你运行的是哪个 Stata 版本?

标签: r label stata


【解决方案1】:

你们很亲密。下面的代码适用于 Stata 16.1 和 R 4.0.3 以及 data.table_1.13.4haven_2.3.1

唯一的区别是您将标签分配给变量的方式。代替 attr(auto, "haven_labelled") &lt;- c(n_cars_by_foreign = "You New Label") 应该是attr(auto$n_cars_by_foreign, "label") &lt;- "You New Label"

library(haven)
library(data.table)
# Get data from Stata (16.1)
auto<-read_dta("sysuseauto.dta")
# Gerenating new variable
auto <- setDT(auto)[,n_cars_by_foreign:=.N,by=.(foreign)]
# Extract the value label of "n_cars_by_foreign" (which is NULL)
attr(auto$n_cars_by_foreign, "label")
## NULL

# Adding the label value
attr(auto$n_cars_by_foreign, "label") <- "Number of cars by foreign"
#Check that value label variable is in place 
attr(auto$n_cars_by_foreign, "label")
## [1] "Number of cars by foreign"

## Save the data
write_dta(auto, "sysuseauto2.dta")

【讨论】:

  • 您好@ÁlvaroA.Gutiérrez-Vargas,我想知道您对如何同时为多个变量执行此操作有任何建议。
  • @Alex,我可能会生成一个小函数并将其插入到lapply 中,该lapply 会调用另一个带有标签的列表。但是,我认为它足够长,可以创建另一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-26
  • 2020-01-02
  • 1970-01-01
相关资源
最近更新 更多