写为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中应用的标签不保存的主要内容,如果未能解决你的问题,请参考以下文章