我有3个分类变量
agegroup{<20,20-30,>03}
disease.level{0,1,2},
performance{<60, >=60}
我希望将它们组合成一个具有3x3x2级别的虚拟变量。有没有快速的方法来做到这一点?我的原始数据集有大约10个变量,每个变量都有多个级别。
基本上我要问这个问题的确切相反 Create new dummy variable columns from categorical variable
非常感谢 EC
答案 0 :(得分:6)
我不确定“虚拟变量”是否需要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
如果您想使用 all 数据框中的变量来创建互动,您可以使用do.call(interaction,ff)
。
如果你确实想要虚拟变量,你可以model.matrix(~combfac-1)
来获取它们。