R为因子变量分配级别

时间:2016-02-14 21:53:04

标签: r categorical-data

我得到了一张类似于此的Excel表格:

datos <- data.frame(op= 1:4, var1= c(4, 2, 3, 2))

现在,还有其他表格包含opvar1的键,这些表恰好是分类变量。假设加载后它们变为:

set.seed(1)
op <- paste("op",c(1:4),sep="")
var1 <- sample(LETTERS, 19, replace= FALSE)

如您所见,数据框中有未使用的级别。我想替换正确关联级别的数字。这就是我尝试过的:

datos[] <- lapply(datos, factor)
levels(datos$op) <- op
levels(datos$var1) <- var1

这失败了,因为它按字母顺序重新排序因子并给出了错误的输出。然后我尝试了:

datos$var1 <- factor(datos$var1, levels= var1, ordered= TRUE)

但是这会将datos$var1中的所有内容都设为NA(我猜这是因为长度不匹配。

这样做的方法是什么?

1 个答案:

答案 0 :(得分:1)

根据@docendoDiscimus的善意建议,我发布此答案以供将来参考:

对于问题中提供的数据:

datos$var1 <- factor(var1[datos$var1], levels= unique(var1))
datos
## op

请注意,此解决方案应该应用datos$var1转换为因子(即不应用代码datos[] <- lapply(datos, factor)