我在R中有两个数据框:
我想将“标签” 中的描述性标签应用于“数据” 中的变量,但是我不知道该怎么做。由于我有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用户
答案 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'])
是否要打印适当的标签?使用xlab
和ylab
:
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上问一个新问题。