【发布时间】:2014-09-26 23:38:25
【问题描述】:
R 新手,以极少的指令参加非常快速的课程。所以如果这是一个菜鸟问题,我提前道歉。
我的任务是从数据框中获取一个具有 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"))))))))))))))
LANDFORM 是一个因素,但我也尝试将其更改为字符,但代码仍然不起作用。
“ws_type”是其余变量的全部内容。
代码运行没有错误,但是当我检查它时,我得到的只是:
> unique(b2$LANDFORM)
[1] 不适用“af_type”
我是否走在正确的道路上?有什么建议么?我应该硬着头皮用 substr() 创建一个新列吗?提前致谢。
【问题讨论】:
-
所以本质上你想重新调整列,听起来像?列应该在更改后保留为一个因素吗?看看
?levels特别是levels<-替换功能 -
天哪。也看看
%in%。 -
@RichardScriven,关卡看起来很有希望。你有什么例子吗?我在 R 手册中检查了该命令,但示例非常简单......
标签: r if-statement