2017-05-14 167 views
-1

我需要您的帮助来解决简单问题。(SAS)从一个特定列(或多列减法)中减去许多列

SAS数据集看起来像 (数据集) 列A列B列C ......列以Z SSS

我想做出新的SAS数据集看起来像 (数据集中的新) 列A - SSS列B - SSS列C - SSS ... Z列 - SSS

也就是说,我想从一列中减去很多列! 我现在没有如何解决这个问题,使用宏或简单的把戏(或SQL?)

在此先感谢!

+2

建议你添加一些样本数据。另外,显示你尝试过的代码。你有没有尝试过使用数组? – Quentin

+0

这个问题不需要宏或SQL'技巧'。数组是最简单的解决方案。看到这里的例子:http://stats.idre.ucla.edu/sas/seminars/sas-arrays/#same – Reeza

+0

正如你所说的你的问题不符合SO规则,所以它不太可能会得到答案,直到它。您需要添加示例数据和输出,并显示您尝试过的内容。 https://stackoverflow.com/help/how-to-ask – Reeza

回答

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;