如何使用美观的代码以整齐的方式重新编码

时间:2019-02-16 17:29:05

标签: r tidyverse

我是医学研究员。我有一个非常大的管理数据库,其中诊断包含在标题为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中的循环;任何可以帮助我更好地重写此代码的东西。

0 个答案:

没有答案