【问题标题】:How to add variable labels from one dataframe into another in R?如何将变量标签从一个数据框添加到 R 中的另一个?
【发布时间】:2019-12-31 18:21:46
【问题描述】:

我在 R 中有两个数据框:

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

我想将 "labels" 中的描述性标签应用到 "data" 中的变量,但我不知道该怎么做。由于我有 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 用户

【问题讨论】:

  • 我投票决定重新打开,因为您的编辑表明它不是重复的。不幸的是,我“不清楚你在问什么”,因为我不知道什么是类似 stata 的变量标签。也许您可以解释或给出您认为最终结果应该是什么样的。
  • 进一步研究:libguides.library.kent.edu/SPSS/DefineVariables 我不认为 R 有你想要的。
  • 或者:stats.idre.ucla.edu/spss/modules/labeling-and-documenting-data 这绝对看起来像是可以合并到整洁的数据输出中的东西,但我不认为这样的东西已经实现了。

标签: r


【解决方案1】:

这实际上取决于您何时要使用变量“标签”。在进行数据分析时,您肯定希望保持简短、简洁的变量名称,否则您最终会遇到

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

这不是有效的语法,而且很麻烦地一次又一次地输入(哎呀,错别字!)。

当您完成分析后,您的老板会要求您将年龄“标签”重命名为“参与者年龄”,然后进行分析,直到您搜索并替换了之前变量名称的每一个匹配项。

因此,在编码过程中保持简洁的变量名称的情况应该很清楚(并且您并没有在您的问题中反对这一点)。

我猜你想要用于演示的可变标签。 如何应用变量标签完全取决于您呈现数据的方式。我举几个例子。

输出到控制台:

> 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 分析过程中没有包含此元数据的结构,因为来自大量软件包的许多函数通常会剥离其属性的输入 data.frames。

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

【讨论】:

  • 感谢您的帮助!我真的很感激。
  • 我发布了一篇新帖子,其中包含我最终希望得到的内容(尽管这确实是一个与这个问题非常不同的问题),如果你有兴趣的话:stackoverflow.com/questions/57698130/…
  • 很高兴您发现它很有用。但是找不到您链接到的问题,否则我会看一下。
  • 很抱歉打扰您!我最终删除了我的第二个帖子。还是谢谢你!
猜你喜欢
  • 1970-01-01
  • 2011-07-25
  • 2021-06-07
  • 1970-01-01
  • 2016-02-03
  • 2019-04-09
  • 1970-01-01
  • 2020-07-28
  • 2021-07-27
相关资源
最近更新 更多