在一个虚拟变量中组合多个分类变量

时间:2011-12-07 17:04:21

标签: r

我有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

1 个答案:

答案 0 :(得分:6)

我不确定“虚拟变量”是否需要0/1指标变量(其中您将有18个虚拟变量)或者您是否需要具有18个等级的单个因子。听起来像后者。 (实际上,pasteinteraction一样有效,但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)来获取它们。

相关问题