Запись фиктивной переменной в упорядоченный множитель

Мне нужна помощь с кодирующими факторами для логистической регрессии.

У меня есть шесть фиктивных переменных, представляющих скобки дохода. Я хочу преобразовать их в единый упорядоченный фактор для использования в логистической регрессии.

Мой фрейм данных выглядит так:

    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
1   INC3  
2   NA   
3   INC6  
4   INC6  
5   INC3 
6   INC4  
7   INC3  
8   INC4   

Это должно быть обычной (и простой) операцией, но мои поиски не дали краткого ответа на вопрос, как выполнить эту перекодировку. Любая помощь очень ценится.

1 ответ

Решение

Вот решение, основанное на другом ответе, который сохраняет значения NA и преобразует их в упорядоченный коэффициент.

> 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

Это сломается, если у вас более одного 1 в ряд.

Другие вопросы по тегам