【问题标题】:How to use variable labels in an R data frame如何在 R 数据框中使用变量标签
【发布时间】:2021-01-29 04:32:06
【问题描述】:

我正在尝试分配并使用变量标签,然后将我的工作交给一位熟悉 SPSS 的新手 R 程序员。 当其他程序员使用数据时,她会想要制作表格。她可能不记得 h1 是什么,但会知道“以英尺为单位的高度”是什么。

我已经分配了标签。现在我该如何使用它们?

澄清:一旦我有了标签,我想像使用列名一样使用标签。因此,在 RStudio 中,如果我输入“heights$”,我希望将“Heights in feet”作为一个选项。但我不想丢失列名。

library(Hmisc) # variable labels
heights = data.frame(h1 = c(4,5,6, 4), h2 = c(48, 60, 72, 48))
label(heights$h1) = "Heights in feet"
label(heights$h2) = "Heights in inches"
heights

table(heights[[`Heights in feet`]]) # Not correct
table(heights[`Heights in feet`]) # Not correct
table(heights$`Heights in feet`) # Not correct

非常感谢您的想法。

【问题讨论】:

    标签: r label hmisc


    【解决方案1】:

    很遗憾,基本索引操作不支持标签。与您所拥有的最相似的最接近的基本子集策略是

    table(heights[, label(heights)=="Heights in feet"])
    

    如果这是一个常见的操作,你可以重新定义一些操作符来为 data.frame 重载那种类型的东西。例如

    `%%.data.frame` <- function(x, lbl) {
      x[,label(x)==lbl]
    }
    
    table(heights%%"Heights in feet")
    

    你甚至可以制作一个作业版本

    `%%<-` <- function(x, ...)  UseMethod("%%<-")
    `%%<-.data.frame` <- function(x, lbl, value) {
      x[,label(x)==lbl] <- value
      x
    }
    heights%%"Heights in feet" <- heights%%"Heights in feet"+1
    

    当然这是非常不标准的,所以我可能不会推荐,但只是指出可能性。

    【讨论】:

      【解决方案2】:

      库(Hmisc)

      高度 = data.frame(h1 = c(4,5,6, 4), h2 = c(48, 60, 72, 48))

      var.labels = c(h1="高度以英尺", h2="高度以英寸")

      label(heights) = as.list(var.labels[match(names(heights), names(var.labels))])

      标签(高度)

      视图(高度)

      【讨论】:

        猜你喜欢
        • 2012-03-05
        • 1970-01-01
        • 2015-02-05
        • 2011-01-10
        • 2017-02-26
        • 2016-03-04
        • 2021-10-05
        • 1970-01-01
        相关资源
        最近更新 更多