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

Using proc sql, Where at least 1 column is a value

如何用sas写:

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

我在弄清楚如何写最后一行时遇到问题,因为我想保留所有列,所以我不只是检查一列我想检查所有列。

如果您使用 DATA 步而不是 PROC SQL,您将拥有更大的灵活性,因为您不能在 PROC SQL 代码中使用变量列表。

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

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

Tom 是对的,最好的方法是使用数据步骤。如果你确定你想用 SQL 来做,尽管你可以这样做:

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