【发布时间】:2020-05-08 10:56:07
【问题描述】:
我经常将带有长文本的因子变量作为级别(例如,调查中的回复:“我非常同意该陈述”可能是一个级别)。如果我想根据因子变量进行子集化,总是输入完整的级别很烦人。我宁愿概述一下从底层整数到级别的映射以及基于此整数的访问。
set.seed(1896)
df <- data.frame(y = runif(100, 0, 10000), x = factor(rep(c("I strongly agree", "I agree", "I disagree", "I strongly disagree"), 25)))
mean(df$y[df$x == "I strongly agree"])
通过以下方式访问底层整数可以获得相同的结果:
mean(df$y[as.integer(df$x) == 3])
我有两个相关的问题: 1)有没有更好/更安全的方法来做到这一点?在具有值和值标签的 Stata 中,可以直接访问标签或值,R 中是否存在类似的东西? 2)有没有办法快速查看R中从整数到因子级别的映射表?一个可以给我这样一张桌子的命令: 1 - “我同意”; 2 - “我不同意”; 3 - “我非常同意”; 4 - “我强烈反对”?
提前致谢!
【问题讨论】:
-
对于 (2) 呢:
levels(df$x)? -
...或者更类似于“表格”的输出:
data.frame(levels(df$x))