Как вызвать факторный уровень переменной для каждого наблюдения и использовать эти значения для создания новой переменной в R?

У меня есть набор данных с категориальной переменной 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 будет автоматически назначать. Однако я не уверен, как это сделать и возможно ли это.


person Skye    schedule 07.11.2012    source источник


Ответы (1)


Я бы использовал эту команду:

nData <- within(nData, compLbl2 = rev(as.numeric(compLbl[drop = TRUE]) -1))
person Sven Hohenstein    schedule 08.11.2012