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