(SAS)从一个特定列中减去多列(或多列减法)

时间:2017-05-14 09:22:43

标签: sas subtraction

我需要你的帮助来解决简单的问题。

SAS Dataset看起来像 (DATASET A) A栏B栏C栏...... Z栏SSS

我想制作新的SAS Dataset (DATASET NEW) A栏 - SSS栏B - SSS栏C - SSS ...... Z栏 - SSS

也就是说,我想从一列中减去很多列! 我现在不知道如何使用宏或简单技巧(或sql?)来解决这个问题

提前致谢!!

1 个答案:

答案 0 :(得分:0)

正如您对帖子的评论所暗示的那样,您的问题有点难以理解,阵列很可能是最好的选择。

也就是说,也许你可以使用下面的代码来解决你的问题:

/*Reproducible random dataset*/
data have;
    do i=1 to 10;
        Column_A = ceil(ranuni(_N_   )*1000);
        Column_B = ceil(ranuni(_N_+10)*1000);
        Column_C = ceil(ranuni(_N_+20)*1000);
        Column_D = ceil(ranuni(_N_+30)*1000);
        Column_E = ceil(ranuni(_N_+40)*1000);
        SSS      = ceil(ranuni(_N_+50)*100 );
        output;
    end;
    drop i;
run;

/*Desired result?*/
data want;
    set have;
    array Columns Column_:;  /* The ':' is a suffix wildcard matching like typed variables with names starting with "Column_" */
    do over Columns;
        Columns = Columns - SSS;
    end;
    drop SSS;
run;