2014-10-18 24 views
0

我对R非常陌生,在将一个 向量中的数字划分为A(< 15),B(15-30),C(30-45)和D (> 45)(最终运行多元回归模型)将一个向量除以类别

我目前正在使用if函数(尽管如果有更好的方法来做 ,我也可以用它),下面是代码:

high<- inc_edu_waste$Percentage.high 

cathigh<- rep(0, times=408) 
for (i in 1:408){ 
if (high[i] < 15){high[i] <- "A"} 
if (high[i]>=15 & high[i]<30){cathigh[i] <- "B"} 
if (high[i]>=30 & high[i]<45){cathigh[i] <- "C"} 
if (high[i]>=45 & high[i]<100){cathigh[i] <- "D"} 
} 

当我运行此我得到以下错误:

错误如果(高[I] < 15){:错过其中TRUE/FALSE需要

另外值:警告消息: 在Ops.factor(高[I],15):<没有意义为因素。

您的帮助将非常感谢!

+1

考虑使用'cut'像'LETTERS [1:5] [切口(高,断裂= C(-Inf,15,30,45,100,Inf文件),labels = FALSE)]' – akrun 2014-10-18 15:40:31

+1

请提供[可重现的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – 2014-10-18 15:47:14

回答

1

作为akrun提示使用cut

> v <- 1:99 
> cut(v, c(0,14,29,44,99), LETTERS[1:4]) 
[1] A A A A A A A A A A A A A A B B B B B B B B B B B B B B B C C C C C C C C C C C C C C C D D D D 
[49] D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D 
[97] D D D 
Levels: A B C D