У меня есть набор данных с категориальной переменной hospital_code
, которая имеет 10 уровней.
Программа, которую я запускаю, выполняет цикл и берет подмножество данных, так что переменная compLbl
содержит ровно 2 из 10 кодов больниц, чтобы их можно было сравнить друг с другом. Теперь у меня есть ситуация, когда в каждом цикле мне нужно, чтобы 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
, они были двоично закодированы? Моя мысль заключалась в том, чтобы сделать это, ссылаясь на факторный уровень 1 для любых двух значений, присутствующих в факторной переменной compLbl. Так:
nData$compLbl2 = with(nData,(ifelse(FACTORLEVEL(compLbl) == 1, 1,0)))
Где в моем приведенном выше примере FACTORLEVEL(compLbl)
вернет 1 для AMH
и 2 для BHC
, поскольку это уровни факторов, которые R будет автоматически назначать. Однако я не уверен, как это сделать и возможно ли это.