我得到了一张类似于此的Excel表格:
datos <- data.frame(op= 1:4, var1= c(4, 2, 3, 2))
现在,还有其他表格包含op
和var1
的键,这些表恰好是分类变量。假设加载后它们变为:
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
(我猜这是因为长度不匹配。
这样做的方法是什么?
答案 0 :(得分:1)
根据@docendoDiscimus的善意建议,我发布此答案以供将来参考:
对于问题中提供的数据:
datos$var1 <- factor(var1[datos$var1], levels= unique(var1))
datos
## op
请注意,此解决方案应该应用将datos$var1
转换为因子(即不应用代码datos[] <- lapply(datos, factor)
。