将数字转换为R中的因子时,请指定“太大”级别

时间:2013-12-18 22:10:07

标签: r r-factor

将数值转换为系数时,是否可以指定转换发生的级别值?是否可以将特殊级别指定为" too large"或者说" 5+"没有定义(n内联)函数?

例如:

c(1,2,20,3,10)

将转换为:

factor(c("1","2","many","3","many"))

3 个答案:

答案 0 :(得分:3)

嗯,一个非常简单的方法是按照

的方式做一些事情
x = c(1,2,20,3,10)
f = x
f[f>5] = "many"
f = factor(f)

可能有更优雅的方法来指定因子函数的levels参数中的某些内容。还在玩这个。

答案 1 :(得分:3)

是的,你可以使用cut,例如,

v = c(1,2,20,3,10)
cut(v, c(0:5, Inf), labels = c(1:5, "many"), right = T, include.lowest = T)

产量

 [1] 1    2    many 3    many
 Levels: 1 2 3 4 5 many

cut有许多额外的参数来控制值如何放在箱中,所以请在那里阅读帮助。

答案 2 :(得分:1)

我不认为在没有定义(n内联)函数的情况下要求它完成是合理的。然而,

x<-c(1,2,20,3,10)
factor("[<-"(x, x>9, "many")) 

...因为已经存在这样的功能([<-)。

[[edit]]上面带有cut的解决方案似乎更具可读性。

或者:

factor(ifelse(x>9, "many", x))