我需要你的帮助来解决简单的问题。
SAS Dataset看起来像 (DATASET A) A栏B栏C栏...... Z栏SSS
我想制作新的SAS Dataset (DATASET NEW) A栏 - SSS栏B - SSS栏C - SSS ...... Z栏 - SSS
也就是说,我想从一列中减去很多列! 我现在不知道如何使用宏或简单技巧(或sql?)来解决这个问题
提前致谢!!
答案 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;