有条件地重新评估R中的因子

时间:2014-05-09 23:49:49

标签: r recode

这个答案可能很明显(我希望是这样),但我只是找到了复杂的解决方案。我想做的是根据另一个因素的水平有条件地重估一个因素。

以下是使用mtcars数据集的示例:

data(mtcars)
mtcars$gear <- as.factor(mtcars$gear)
mtcars$am <- as.factor(mtcars$am)

table(mtcars$gear, mtcars$am) # examining the levels
levels(mtcars$gear)
# [1] "3" "4" "5"
levels(mtcars$am)
"0" "1"

现在在那些齿轮级别为“5”的汽车中,如何指定一个新的“齿轮”级别“6” 那些“am”级别为“1”的人,同时保留“齿轮”的因子级别“3”,“4”,“5”?这是一个更简单的例子,但考虑到我的数据集的复杂性,我宁愿将向量保持为因子(例如,不要转换为数字和背面)。

1 个答案:

答案 0 :(得分:2)

没有&#34; 6&#34;齿轮水平开始,所以你需要创建一个:

levels(mtcars$gear) <- c(levels(mtcars$gear), "6")

然后,您可以使用[<-功能有条件地分配:

mtcars$gear[ mtcars$am==1 ] <- "6"
table(mtcars$gear, mtcars$am)

     0  1
  3 15  0
  4  4  0
  5  0  0
  6  0 13

如果没有相应的&#39;级别,则无法为因子变量赋值。在因子属性中。