Как аккуратно перекодировать с помощью лучшего кода - PullRequest
0 голосов
/ 16 февраля 2019

Я медицинский исследователь.У меня есть очень большая административная база данных, где диагнозы включены в столбцы с заголовками dx1 - dx15 (dx = диагноз).Эти столбцы содержат числовые / буквенные коды, которые находятся в символьной форме в R. Я написал код для запуска через эти столбцы dx, но хотел бы переписать код в виде массива.Я легко могу сделать это в SAS, но мне трудно сделать то же самое в R.

Я прилагаю код, который я использую здесь:

a <- as.character(c("4578","4551")) # здесь я идентифицирую изначальнокоды для интересующего меня диагноза.

Затем я создаю новую переменную cancer в моем фрейме данных df и использую этот код для идентификации пациентов с раком.новая переменная df $ Cancer будет либо 0, либо 1 в зависимости от диагноза.

Код работает, но, как вы можете видеть, совсем не аккуратен и элегантен.

df$cm_cancer <-  with(df, ifelse((dx3 %in% a | dx4 %in% a | dx5 %in% a |
                                    dx6 %in% a | dx7 %in% a | dx8 %in% a | dx9 %in% a |
                                    dx10 %in% a | dx11 %in% a | dx12 %in% a | dx13 %in% a |
                                    dx14 %in% a | dx15 %in% a), 1, 0))

СSAS, я могу сделать то же самое с этим элегантным фрагментом кода:

data df2;
    set df;
    cancer = 0;
    array dgn[15] dx1 - dx15;

    do i = 1 to 15;
        if dgn[i] in ("4578","4551") then
            cancer = 1;
    end;

    drop i;
run;

Я отказываюсь верить, что у SAS есть лучшие ответы на это, чем у R;Просто согласитесь, что я все еще новичок в использовании R.

Любая помощь приветствуется;поверьте мне, я пытался в Google найти массивы в R, циклы в R;все, что поможет мне переписать этот код лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...