R的新手,在非常小的指令下采用非常加速的类。所以如果这是一个菜鸟问题,我提前道歉。使用ifelse语句来压缩变量
我的任务是从数据框中取一个具有21个级别的特定列,并使用if或ifelse语句将它们压缩到4个级别。我已经试过什么感觉上百的组合,但这似乎最有前途的代码:
> b2$LANDFORM=ifelse(b2$LANDFORM=="af","af_type",
ifelse(b2$LANDFORM=="aflb","af_type",
ifelse(b2$LANDFORM=="afub","af_type",
ifelse(b2$LANDFORD=="afwb","af_type",
ifelse(b2$LANDFORM=="afws","af_type",
ifelse(b2$LANDFORM=="bfr","bf_type",
ifelse(b2$LANDFORM=="bfrlb","bf_type",
ifelse(b2$LANDFORM=="bfrwb","bf_type",
ifelse(b2$LANDFORM=="bfrwbws","bf_type",
ifelse(b2$LANDFORM=="bfrws","bf_type",
ifelse(b2$LANDFORM=="lb","lb_type",
ifelse(bs$LANDFORM=="lbaf","lb_type",
ifelse(b2$LANDFORM=="lbub","lb_type",
ifelse(b2$LANDFORM=="lbwb","lb_type","ws_type"))))))))))))))
地貌是一个因素,但我试图将其更改为一个字符过了,该代码仍然没工作。
“ws_type”是其余变量的全部。
代码运行没有错误,但是当我检查,我得到的是:
> unique(b2$LANDFORM)
[1] NA “af_type”
难道我连上了正确的道路?有什么建议么?我应该咬子弹并用substr()创建一个新列吗?提前致谢。
所以基本上你想要重新调整列,听起来像?这个专栏应该在改变之后仍然是一个因素吗?看看'?levels',特别是'levels <-'替换函数 – 2014-09-26 23:51:07
好主。另请看'%in%'。 – shadowtalker 2014-09-27 01:23:53
@RichardScriven,水平看起来很有希望。你有什么例子吗?我在R手册中查看了这个命令,但这些例子非常简单... – Charlie 2014-09-28 22:30:59