我有一个数据集,它有一个分类变量hospital_code,它有10个级别。
我正在运行的程序循环遍历并获取数据的一个子集,以便变量compLbl恰好包含10个hospital_codes中的2个,以便可以将它们相互比较。我现在遇到了这样一种情况,在每个循环中,我需要对compLbl进行二进制编码(1和0)。
如果我只是从第一个循环中获取子集数据,其中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)将为AMH返回1,为BHC返回2,因为这些是R自动分配的因子级别。然而,我不确定如何做到这一点,或者这是否可能。
发布于 2012-11-09 04:42:36
我将使用以下命令:
nData <- within(nData, compLbl2 = rev(as.numeric(compLbl[drop = TRUE]) -1))https://stackoverflow.com/questions/13279524
复制相似问题