levels()不接受负值。任何解决方法?

时间:2017-11-25 16:22:38

标签: r

符号是汽车的保险风险等级。

str(carprice$symboling)

$ symboling:因子w / 6级别“-2”,“ - 1”,“0”,..:6 6 4 5 5 5 4 4 4 3 ...

levels(carprice$symboling)[-2:-1] <- "safe"
levels(carprice$symboling)[0:1] <- "mild risky"
levels(carprice$symboling)[2:3] <- "risky"

str(carprice$symboling)

$ symboling:因子w / 2级别“轻微冒险”,“冒险”:2 2 2 2 2 2 2 2 2 2 ...

为什么没有预期负面水平?

1 个答案:

答案 0 :(得分:2)

R中的索引从1开始。它表示vector中值的位置。它可以是data.frame,matrix中的列索引或行索引。在这里,我们尝试根据已存在级别的位置将“{1}}”符号“列分配给特定值。假设水平大约为-2:3,前两个水平将分配为“安全”,然后下一个水平将分配为“轻度风险”,最后两个水平分配为“风险”

levels

这也可以一步完成

levels(carprice$symboling)[1:2] <- "safe"
levels(carprice$symboling)[3:4] <- "mild risky"
levels(carprice$symboling)[5:6] <- "risky"

作为可重复的例子

levels(carprice$symboling) <- setNames(rep(c('safe', 'mild risky', 'risky'), each = 2),
              -2:3)[levels(carprice$symboling)]