【问题标题】:Label variables in R using a vector使用向量标记 R 中的变量
【发布时间】:2019-12-24 10:45:08
【问题描述】:

我有一个像下面这样的向量

label_names<-c("A","B","C")

我也有以下data.frame

df<- data.frame(var1=1:5,var2=1:5, var3=1:5)

我想要做的是将label_names 分配给我的df。然后我想把data.frame写成.dta文件来读取Stata中的标记数据。请注意我的原始向量比这个大,所以我需要一个通用的解决方案。

【问题讨论】:

  • “分配”是什么意思?您想将其作为第四个变量添加到数据框中吗?还是要将列名(var1、var2、var3)更改为标签名称?或者你想用标签名称的标签从你的一个变量中提取一个因素(这在这里没有意义,因为标签与唯一的可能性不匹配)?
  • 可能是attr(df, "label_names") &lt;- label_names?
  • names(df) &lt;- label_names
  • 应用您提到的方法后导出数据时,STATA 仍然不显示变量标签。 @Annet 标签名称和列名称遵循相同的顺序,因此标签不需要匹配唯一的可能性。

标签: r stata


【解决方案1】:

根据我有限的经验,R 使用标签的频率不如Stata。你仍然可以做到。你需要两个包:expsshaven

r 中,使用expss::apply_labels 分配变量标签和值标签。我只是为了演示的目的使用变量标签:

df <- data.frame(year = c(2017, 2018, 2019), 
                 age = c(25, 30, 40), 
                 bmi = c(23.2, 28.3, 32))
# assign labels in r 
df  = expss::apply_labels(df, 
                   year = "Survey year",
                   age = "Age, years",
                   bmi = "BMI, kg/m2"
  )
# export to Stata
haven::write_dta(df, "havenstata.dta")

Stata,你可以查看:

. des

Contains data from C:\...\havenstata.dta
  obs:             3                          
 vars:             3                          24 Dec 2019 22:17
 size:            72                          
------------------------------------------------------------------------------------------------------
              storage   display    value
variable name   type    format     label      variable label
------------------------------------------------------------------------------------------------------
year            double  %10.0g                Survey year
age             double  %10.0g                Age, years
bmi             double  %10.0g                BMI, kg/m2
------------------------------------------------------------------------------------------------------
Sorted by: 

虽然有一些解决方案,但我认为在导出到Stata 后标记Stata 中的数据可能会更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2018-10-31
    • 2021-12-26
    • 2020-05-16
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    相关资源
    最近更新 更多