【发布时间】:2016-08-25 02:58:10
【问题描述】:
现在我有一个这样的数据框:
Z A B C D F
1 82 1 NA NA NA 77
2 454 NA 2 NA NA 18
3 606 NA NA 3 NA 12
4 55 NA NA NA 4 23
5 32 NA 2 NA NA 4
# And many more rows follows
A、B、C、D 列中只有一个列在每一行上都有值,并且每一列内的值相同。我想将它们合并为一列,1、2、3、4 将成为这一新列的因子水平。
期望的结果:
Z A B C D F E
1 82 1 NA NA NA 77 1
2 454 NA 2 NA NA 18 2
3 606 NA NA 3 NA 12 3
4 55 NA NA NA 4 23 4
5 32 NA 2 NA NA 4 2
# And many more rows follows
# Dropping A,B,C,D as a side-effect is OK
我尝试过使用ifelse 语句(data$E = ifelse(data$A == 1, 5, data$A),但是每个ifelse 语句都会覆盖之前的修改,所以最后只将级别 4 写入 E 列。
有什么优雅的方法可以合并这些列吗?删除 A、B、C、D 作为副作用是可以的。谢谢!
编辑:如果我在左侧和右侧有更多不相关的列怎么办?是否需要某种切片? (见编辑代码)
【问题讨论】: