使用proc sql,其中至少有一列是一个值

时间:2017-10-31 15:41:35

标签: sas where-clause proc-sql

我如何写sas:

proc sql; 
create table THIS as 
        select * 
        from MAIN(keep=id col1 -- col34)
    where (AT LEAST ONE OF THE COLUMNS contains 1) ;
    ; 

我有一个问题,想弄清楚如何写最后一行bc我想保留所有列,所以我不只是检查一列,我想检查所有列。

2 个答案:

答案 0 :(得分:5)

如果使用DATA步骤而不是PROC SQL,则可以更灵活,因为您无法在PROC SQL代码中使用变量列表。

假设列表中的所有变量都是数字的,您可以这样做。

data this;
   set main ;
   keep id col1 -- col34;
   if whichn(1,of col1 -- col34);
run;

答案 1 :(得分:4)

Tom是对的,最好的方法是使用数据步骤。如果您确定要使用SQL,尽管您可以执行以下操作:

proc sql noprint;
  create table THIS as
  select * 
  from MAIN(keep=id col1 -- col34)
  where sum(col1,col2,col3, ... ,col34)
  ;
quit;