将数值转换为系数时,是否可以指定转换发生的级别值?是否可以将特殊级别指定为" too large
"或者说" 5+
"没有定义(n内联)函数?
例如:
c(1,2,20,3,10)
将转换为:
factor(c("1","2","many","3","many"))
答案 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))