写为Stata文件时,R中应用的标签不保存

Posted

技术标签:

【中文标题】写为Stata文件时,R中应用的标签不保存【英文标题】:Labels applied in R do not save when writing as a Stata file 【发布时间】:2021-12-26 11:34:57 【问题描述】:

我使用“expss”中的 apply_labels 函数在 R 中添加了变量(以及某些值)标签。当我想使用'write.dta'保存数据并在Stata中打开它(或在R中重新打开新保存的数据)时,标签不会出现。

我怀疑它与 write.dta 文档中的这一行有关:

如果“var.labels”属性包含带有 每个变量的字符串标签,然后将其写为变量 标签。否则,变量名称将作为变量标签重复。

因为这正是正在发生的事情(变量名称作为变量标签重复)。在尝试使用 write.dta 写入数据之前检查 attr(df$variable, "label") 时,会出现标签。

我收到警告消息:

“在 write.dta [...] 中缩写变量名”。

不确定这是否与问题有关。

用于添加变量、标签和写入数据的代码的可重现示例:

library(expss)
library(dplyr)
library(foreign)

df <- data.frame(country = rep(c("NL", "DE", "FR", "AT"), 2),
                 year = rep(c(2012,2014), 4),
                 LS_medianpovgap60_disp_wa = c(0.448257605781815, 0.468249874784546, 0.473270740126805, 0.483814288478694, 0.486781335455043, 0.49246341926957, 0.51121872756711, 0.556027028656306))

df <- apply_labels(df,
                   country = "Country",
                   year = "Year",
                   LS_medianpovgap60_disp_wa = "Median shortfall from the poverty thresholds using 60% of the median income, disposable income only households with working age (LIS and SILC average)")

write.dta(df, "df_labelled.dta")

【问题讨论】:

您能否提供一个可重现的用于添加变量、标签和写入数据的代码示例? 【参考方案1】:

对于 Stata 版本 > 7,如果标签属性超过 31 个字符,write.dta 会尝试缩写变量标签。

在代码的编写和读取步骤中使用haven 包可能会获得更好的结果。

haven::write_dta(df, "df_labelled.dta")
temp <- haven::read_dta("df_labelled.dta")
temp

编辑 下面的 cmets 指出 Stata 对变量标签的长度(80 个字符)施加了限制。因此,基于 R 的解决方法都将受到此约束。

【讨论】:

谢谢。使用 Haven 来编写数据(更好)。用外文写入数据会自动缩写变量名,但不保存标签。使用 Haven 写入数据时变量名称太长会出错,但在手动更正这些错误后,它确实保存了数据,同时将标签名称剪切为 80 个字符。 仅供参考 80 个字符是 Stata 施加的限制。请参阅help label:“标签变量将标签(最多 80 个字符)附加到变量。如果未指定标签,则删除任何现有变量标签。”

以上是关于写为Stata文件时,R中应用的标签不保存的主要内容,如果未能解决你的问题,请参考以下文章

基础方法 | 数据管理:Stata与R语言的应用

stata如何调用R软件有没有办法用stata调

在Stata中,foreach x的R等价函数是什么?[关闭]

一文掌握R语言快速实现普通Meta分析

将Stata代码翻译成R

将QCheckBox的状态保存在文件中,程序重启时加载状态