如何为每个观察调用变量的因子级别,并使用这些值在R中创建一个新变量?

时间:2012-11-07 22:41:07

标签: r binary-data r-factor

我有一个带有分类变量hospital_code的数据集,它有10个级别。

我正在运行的程序循环并获取数据的子集,使得变量compLbl恰好包含10个hospital_codes中的2个,以便它们可以相互比较。我现在有一种情况,在每个循环中,我需要compLbl进行二进制编码(1s和0s)。

如果我只是从第一个循环获取compLbl的可能值为AMHBJH的子集数据,我可以轻松地执行以下操作:

nData$compLbl2 = with(nData,(ifelse(compLbl == "AMH", 1,0)))

获取如下所示的数据:

head(nData)
compLbl outLbl Race_Code Age Complexity_Subclass_Code compLbl2
1     AMH      0         W  63                        1        1
2     AMH      0         W  44                        2        1
3     AMH      0         W  88                        3        1
4     BHC      0         W  64                        1        0
5     BHC      0         W  61                        2        0
6     BHC      0         W  61                        1        0

我如何概括这一点,以便无论compLbl中的两个值是什么,它都会对它们进行二进制编码?我的想法是通过引用因子级别1来实现这一点,因为因子变量compLbl中存在两个值。像这样:

nData$compLbl2 = with(nData,(ifelse(FACTORLEVEL(compLbl) == 1, 1,0)))

在上面的示例中,FACTORLEVEL(compLbl)会为AMH返回1,为BHC返回2,因为这些是R会自动分配的因子级别。但是,我不确定如何做到这一点,或者是否有可能。

1 个答案:

答案 0 :(得分:0)

我会使用这个命令:

nData <- within(nData, compLbl2 = rev(as.numeric(compLbl[drop = TRUE]) -1))