Объедините несколько категориальных переменных в одну фиктивную переменную

У меня есть 3 категориальные переменные

agegroup{<20,20-30,>03}    
disease.level{0,1,2},  
performance{<60, >=60}

и я хотел бы объединить их в одну фиктивную переменную с уровнями 3x3x2. Есть ли быстрый способ сделать это? Мои оригинальные наборы данных имеют около 10 переменных с несколькими уровнями в каждом.

По сути, я прошу о полной противоположности этого вопроса. Создайте столбцы фиктивной переменной из категориальной переменной.

Большое спасибо EC

1 ответ

Решение

Я не уверен, хотите ли вы использовать "фиктивную переменную" переменные индикатора 0/1 (в которых у вас будет 18 фиктивных переменных) или вам нужен один фактор с 18 уровнями. Похоже, последний. (На самом деле, paste будет работать так же, как interaction, хотя interaction немного более самоописательно.)

> ff <- expand.grid(agegroup=factor(c("<20","20-30",">30")),
       disease.level=factor(0:2),performance=factor(c("<60",">=60")))
> combfac <- with(ff,interaction(agegroup,disease.level,performance))
> combfac
 [1] <20.0.<60    20-30.0.<60  >30.0.<60    <20.1.<60    20-30.1.<60 
 [6] >30.1.<60    <20.2.<60    20-30.2.<60  >30.2.<60    <20.0.>=60  
[11] 20-30.0.>=60 >30.0.>=60   <20.1.>=60   20-30.1.>=60 >30.1.>=60  
[16] <20.2.>=60   20-30.2.>=60 >30.2.>=60  
18 Levels: <20.0.<60 20-30.0.<60 >30.0.<60 <20.1.<60 20-30.1.<60 ... >30.2.>=60

Если вы хотите использовать все переменные в фрейме данных для создания взаимодействия, вы можете использовать do.call(interaction,ff),

Если бы вы хотели фиктивные переменные, вы бы сделали model.matrix(~combfac-1) чтобы получить их.

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