我有一个hospital_code
包含 10 个级别的分类变量的数据集。
我正在运行的程序循环并获取数据的一个子集,以便该变量compLbl
恰好包含 10 个医院代码中的 2 个,以便可以将它们相互比较。我现在有一种情况,在每个循环中,我需要对 compLbl 进行二进制编码(1s 和 0s)。
如果我只是从第一个循环中获取子集数据,其中 compLbl 的可能值为AMH
和BJH
,我可以轻松地执行以下操作:
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
它们进行二进制编码?我的想法是可能通过为因子变量 compLbl 中存在的任何两个值引用因子级别 1 来做到这一点。像这样:
nData$compLbl2 = with(nData,(ifelse(FACTORLEVEL(compLbl) == 1, 1,0)))
在我上面的示例中,FACTORLEVEL(compLbl)
将返回 1AMH
和 2,BHC
因为这些是 R 将自动分配的因子水平。但是,我不确定如何执行此操作,或者是否可能。