获得因子变量

时间:2015-10-05 14:20:43

标签: r labels factors levels

我正在寻找一个函数来获取因子变量的原始映射表。我导入一个Rdata文件。我有一个名为" FactVar"的因子变量。我知道" FactVar"的映射表。如下:

"010025" -> city1
"015146" -> city2
"048017" -> city3
"082053" -> city4

在我的数据框中," FactVar"数据如下(前5例):

1: city1
2: city3
3: city4
4: city1
5: city3

所以,没有" city2"在我的df。我可以使用哪个函数来获取原始映射表?它在我的Rdata文件中可用吗?

谢谢

编辑: 我试着通过一个更好的例子来澄清我的问题。我有一个调查问题,其中包含以下可能的答案:

1: "Yes"
2: "No"
8: "Don't Know"
9: "Not Applicable"

我创建了一个因子变量" FactVar":

Var <- c(1,2,1,2,2,2,1,8,1,2)
FactVar <- factor(Var, levels=c(1,2,8,9), labels=c("Yes", "No", "Don't Know", "Not Applicable")

如您所见,在我的Rdata文件中,我有一个因子变量,其中没有数据链接到级别&#34;不适用&#34;。如何在调查问题中获得原始映射表?

4 个答案:

答案 0 :(得分:1)

我认为答案是&#34;没有。&#34;我没有任何明确的信息来支持这一点,但即使仔细查看factor及相关功能的文档,我也看不到任何恢复原始级别的方法,除非您单独存储它们(例如,作为attribute,或者在创建因子时保存原始函数调用。

坦率地说,我认为这对程序的设计有些疏忽,虽然它肯定是一个边缘情况(我之前从未考虑过),但我还是这样。我将在这个问题上给予赏金,并希望它得到Dirk Eddelbuettel或其他R大师之一的关注。

编辑:我没有看到&#34;添加赏金&#34;按钮。也许它会在几天内出现(希望我记得)。

答案 1 :(得分:1)

之前我有过这个问题,在这里得到了解答:How to access actual internal factor lookup hashtable in R

抱歉,我没有足够的声誉将其置于评论中。

答案 2 :(得分:0)

不确定我明白你的意思。 您可以为因子的级别指定标签。

df$FactVar <- factor(df$FactVar, levels=c(paste0("city", 1:4))) # assuming you go up to 'city4'

重点是您可以使用函数levels中的factor参数以任意顺序指定级别

答案 3 :(得分:0)

str(FactVar)

将返回级别及其标签之间的映射,如下所示:

FactVar <- factor(Var, levels=c(1,2,8,9), labels=c("Yes", "No", "Don't Know", "Not Applicable

并将包含未使用因素的标签和级别。