如何在 R 数据框中使用变量标签

How to use variable labels in an R data frame

我正在尝试分配然后使用变量标签,然后将我的工作交给有 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

非常感谢您的想法。

图书馆(Hmisc)

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

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

标签(身高)= as.list(var.labels[匹配(姓名(身高),姓名(var.labels))])

标签(高度)

视图(高度)

很遗憾,基本索引操作不支持标签。与你最接近的基本子集策略是

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

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