这个答案可能很明显(我希望是这样),但我只是找到了复杂的解决方案。我想做的是根据另一个因素的水平有条件地重估一个因素。
以下是使用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”?这是一个更简单的例子,但考虑到我的数据集的复杂性,我宁愿将向量保持为因子(例如,不要转换为数字和背面)。
答案 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;级别,则无法为因子变量赋值。在因子属性中。