我有三个分类变量
agegroup{<20,20-30,>03}
disease.level{0,1,2},
performance{<60, >=60}
我希望将它们合并为一个具有3x3x2级别的虚拟变量。有没有快速的方法可以做到这一点?我的原始数据集中有大约10个变量,每个变量都有多个级别。
基本上,我要求与此问题完全相反。 从分类变量创建新的虚拟变量列 非常感谢 EC
我有三个分类变量
agegroup{<20,20-30,>03}
disease.level{0,1,2},
performance{<60, >=60}
我不确定你是否需要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)
来获取它们。