Recoding dummy variable to ordered factor

前提是你 提交于 2019-11-29 14:58:26

Here's a solution based on another answer that keeps the NA values and converts to an ordered factor.

> inc
  INC1 INC2 INC3 INC4 INC5 INC6
1    0    0    1    0    0    0
2   NA   NA   NA   NA   NA   NA
3    0    0    0    0    0    1
4    0    0    0    0    0    1
5    0    0    1    0    0    0
6    0    0    0    1    0    0
7    0    0    1    0    0    0
8    0    0    0    1    0    0
> inc$F = factor(apply(inc, 1, function(x) names(x)[x == 1]),levels=names(inc),ordered=TRUE)

> inc
  INC1 INC2 INC3 INC4 INC5 INC6    F
1    0    0    1    0    0    0 INC3
2   NA   NA   NA   NA   NA   NA <NA>
3    0    0    0    0    0    1 INC6
4    0    0    0    0    0    1 INC6
5    0    0    1    0    0    0 INC3
6    0    0    0    1    0    0 INC4
7    0    0    1    0    0    0 INC3
8    0    0    0    1    0    0 INC4
> inc$F
[1] INC3 <NA> INC6 INC6 INC3 INC4 INC3 INC4
Levels: INC1 < INC2 < INC3 < INC4 < INC5 < INC6

This will break if you have more than one 1 in a row.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!