如何将变量标签从一个数据框添加到R中的另一个数据框?

时间:2019-08-27 14:26:46

标签: r

我在R中有两个数据框:

  1. “标签” 包含(a)变量名称和(b)描述性变量标签;
  2. “数据” 包含(a)相同的变量名和(b)关联的数据,但描述性标签。

我想将“标签” 中的描述性标签应用于“数据” 中的变量,但是我不知道该怎么做。由于我有400多个标签,因此手动输入它们将花费相当长的时间。

我的数据如下所示(经过简化):

labels <- data.frame(names = c("age", "sex", "year"), labels=c("Age of Participant", "Sex of Participant","Year of Participation"))

data <- data.frame(age=c(12, 14, 16), sex=c(1, 0, 1), year=c(1998, 1997, 1994))

我尝试同时使用sjlabelled包和将此技术(R: Assign variable labels of data frame columns)应用于数据,但是我不知道如何使这些工具在这种情况下适用。

请注意,我不是只是尝试合并数据集,而是想将类似于Stata或SPSS的“变量标签”应用于我的变量。

感谢您的帮助! -新的R用户

1 个答案:

答案 0 :(得分:1)

这实际上取决于您何时要使用变量“标签”。在进行数据分析时,您绝对要保留简短明了的变量名,否则最终会遇到以下情况:

lm(Sex of Participant ~ `Year of Participation`, data=data)

这是无效的语法,并且要反复键入一遍又一遍又一遍又一遍又一遍的数字(哇,错别字!)。

分析完成后,老板要求您将年龄“标签”重命名为“参与者年龄”,然后进行分析,直到您搜索并替换了每次出现的前一个变量名。 / p>

因此,应该清楚地说明在编码过程中保持简洁的变量名的情况(并且您并没有对此提出异议)。

我猜您要为演示使用变量标签。 如何如何应用变量标签完全取决于您如何呈现数据。我会举几个例子。

输出到控制台:

> data
  age sex year
1  12   1 1998
2  14   0 1997
3  16   1 1994

在这种情况下,我会将标签存储在命名向量中,该向量还定义了列的顺序。在这种情况下,我们可以

labels <- c(age='Age of participant', sex="Sex of Participant", year="Year of Participation")
present <- data[,names(labels)]
colnames(present) <- labels
> present
  Age of participant Sex of Participant Year of Participation
1                 12                  1                  1998
2                 14                  0                  1997
3                 16                  1                  1994

绘制数据:

plot(data[,c('age','year'])

是否要打印适当的标签?使用xlabylab

plot(data[,c('age','year'], xlab='Age of participant', ylab='Year of participation')

使用ggplot2绘制数据:

再次,轴标签被抛光并分开粘贴

ggplot(data, aes(x=age, y=year)) + geom_point() + labs(x='Age of participant', y='Year of participation')

如果您想绘制一个非常小的图,也许您会在换行符(\n中进行搜索,以将标签分成两行。

使用xtable格式化的表格:

这实际上与“输出到控制台”相同。

结论:

我希望我已经说服了您,为什么这不是一个简单的答案,因为R的变量标签“不是一件事”,因为它们的用途差异很大。

尽管重命名示例支持具有标签的情况。但是,在整个R分析过程中,并没有一种包含这种元数据的结构,因为许多来自封装包的函数通常会去除输入数据,其属性框架。

如果您有一个特定的用例来显示变量标签,我们非常欢迎在Stackoverflow上问一个新问题。