Я не уверен, что под "фиктивной переменной" вы хотите использовать переменные индикатора 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)
, чтобы получить их.