Как преобразовать NA в большом наборе данных в 0 или 1? - PullRequest
3 голосов
/ 06 марта 2012

Вот фрагмент моего фрейма данных:

MemberID      Specialty                   Surgery          Internal
1 42286978     Surgery                      NA               NA
2 97903248     Internal                     NA               NA
3 2759427      Internal                     NA               NA      
4 73570559     Surgery                      NA               NA

В столбцах «Хирургия» и «Внутренний» я хотел бы заменить NA с 0 или 1, 1 - «да», 0 - «нет». Это очень большой набор данных, и я бы предпочел использовать для этого инструмент или функцию в r.

Таблица ниже - это то, чего я надеюсь достичь.

    MemberID    Specialty                 Surgery          Internal
1  42286978     Surgery                      1                0
2  97903248     Internal                     0                1
3   2759427     Internal                     0                1  
4  73570559     Surgery                      1                0

Буду очень признателен за любую помощь.

Ответы [ 3 ]

5 голосов
/ 06 марта 2012

Предполагая, что ваш фрейм данных называется dfrm, вы имеете в виду что-то подобное?

dfrm$Surgery <- ifelse(dfrm$Specialty=="Surgery", 1, 0)
dfrm$Internal <- ifelse(dfrm$Specialty=="Internal", 1, 0)
4 голосов
/ 06 марта 2012

Предположим, что это фрейм данных с именем dfrm

dfrm$Surgery <- 0 + (dfrm$Specialty=="Surgery")
dfrm$Internal <- 0 + (dfrm$Specialty=="Internal")
0 голосов
/ 06 марта 2012

Я бы предложил начать только с MemberID и Specialty и использовать немного ifelse языка.

Если Хирургия и Внутренняя являются взаимоисключающими, вам нужна только одна новая переменная, потому что вторая дает вам ту же самую информацию (является ли врач хирургом или практикует внутреннюю медицину).

Сделайте ваши данные data.frame с именем specialty.data и попробуйте это:

specialty.data$Surgery <- ifelse( specialty.data$Specialty == "Surgery", 1, 0 )

Надеюсь, это поможет!

...