【问题标题】:Variable labels in the R package Haven with SPSS带有 SPSS 的 R 包 Haven 中的变量标签
【发布时间】:2018-07-26 21:40:31
【问题描述】:

我正在尝试从带有 Have 包的 SPSS por 文件中访问变量标签(这是变量的描述)。我可以用外国包裹做得很好,但我想用避风港。有什么建议吗?

# Using foreign I can get the variable labels
with_foreign <- foreign::read.spss(mydata.por)
attr(with_foreign, "variable.labels")

# With haven I get null
with_haven <- haven::read_spss(mydata.por)
attr(with_haven, "variable.labels")

# Some things I've experimented with
labelled::var_label(with_haven) # NULL
attributes(with_haven) # Not useful
as_factor(with_haven$var1) # Gives me definitions for factor levels (not what I need)

【问题讨论】:

    标签: r import r-haven


    【解决方案1】:

    read_spss 中所述,标签存储为每列的属性,而不是data.frame 的属性。试试

    lapply(with_haven, function(x) attributes(x)$label)
    

    【讨论】:

    • 感谢您的回复,这给出了与每个变量的因子水平相关的标签。我想要的是变量标签本身。例如,您可能有一个变量 var1,其级别 0 和 1 与“投票给奥巴马”或“投票给特朗普”匹配。这些是您的代码将显示的级别。但是var1 也可能有一个完整的定义,比如“你在 2016 年投票给了谁”——这就是“variable.labels”使用外来语提取的。我正在寻找的是在国外被称为“变量标签”的变量定义。
    • 原来 Haven 1.1.0(这是我正在使用的)没有给出正确的变量定义,但 1.1.1 确实你的代码有效(`labelled::var_label(with_haven )'来自我问题中的代码)。感谢您的帮助!
    • 很高兴你明白了。在haven 中,变量标签位于label 属性中,值标签位于labels 属性中。
    【解决方案2】:

    函数可以解决问题。

    sapply(with_haven, attr,"label")

    【讨论】:

      猜你喜欢
      • 2021-08-30
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 2021-07-05
      • 2016-05-08
      相关资源
      最近更新 更多