0

hospital_code10レベル のカテゴリ変数を持つデータセットがあります。

私が実行しているプログラムはループしてデータのサブセットを取得し、変数compLblに10個のhospital_codeのうち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

これを一般化して、2つの値が何であっても、compLblそれらをバイナリコード化するにはどうすればよいですか?私の考えは、因子変数compLblに存在する2つの値について、因子レベル1を参照することによってこれを行うことでした。このような:

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

上記の例では、Rが自動的に割り当てるファクターレベルであるため、1と2をFACTORLEVEL(compLbl)返します。ただし、これを行う方法、またはそれが可能かどうかはわかりません。AMHBHC

4

1 に答える 1

0

私はこのコマンドを使用します:

nData <- within(nData, compLbl2 = rev(as.numeric(compLbl[drop = TRUE]) -1))
于 2012-11-08T20:42:36.313 に答える