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