首页 > 解决方案 > 根据 Y/N 列修改 SAS 中的行

问题描述

我正在尝试为具有特定条件的某些行修改 SAS 中的列。

这是我目前掌握的信息:

patientNum    siteNum   diseaseType   haveDiseaseD
001           12        A             N
002           14        B             N
003           15        C             Y

我希望新表如下所示:

patientNum    siteNum   diseaseType   
001           12        A             
002           14        B             
003           15        D

因此,如果任何患者在“HaveDiseaseD”列下有“是”,我只想修改表格并切换“DiseaseType”列中的信息。

逻辑类似于:

data have;
 set want;
   do i = 1 to dim(patientNum);
   if haveDiseaseD(i) == 'Y' then diseaseType(i) = D
      else diseaseType(i) = diseaseType(i)
run;

标签: loopssasconditional

解决方案


SAS 自动逐行遍历数据。您不需要指定数组或维度。由于如果另一列满足条件,您只需要更改一列的一个值,因此您的程序将只有四行代码。

data have;
    set want;
    if(haveDiseaseD = 'Y') then diseaseType = 'D';
run;

推荐阅读