SAS案例声明-如果是,则为。否则就离开

时间:2019-05-02 20:19:26

标签: sql if-statement sas case

我有一列包含一些不需要的数据“ XX”,并希望将它们设置为0。否则,请保持列的数据不变。如果columnA =“ XX”,则类似于0,否则为columnA。我尝试使用proc SQL SAS步骤执行此操作,但这没有用。因此,寻找使用SAS SQL的最有效方法。谢谢你的帮助。

if columnA = "XX" then 0 
Else columnA
End as columnA

3 个答案:

答案 0 :(得分:2)

这应该在proc sql中起作用:

proc sql;
    select (case when columnA = 'xx' then '0' else columnA end) as columnA
    from t;

请注意,0是此表达式中的字符串。 columnA似乎是一个字符串(基于比较)。 case表达式返回具有指定类型的值-在这种情况下,它应该是字符串。

答案 1 :(得分:0)

这是SQL中的CASE语句。

Case when columnA='XX' then '0'
     else columnA 
end as ColumnA_New

原始代码:     当columnA ='XX'然后为0的情况          其他列A     以ColumnA结尾

答案 2 :(得分:0)

两个先前的解决方案都能正常工作。确实,在 proc sql 中询问了该解决方案,但是我发现数据步进方法似乎更简单。为了完整起见,将其张贴在此处。

/*Generate sample data*/
data begin; 
  input value @@; 
  cards; 
1 2  3  2.5 1.7 3 34 33 33 33.7 34 34
  ; run;

/*replace value=33 with zeros*/
data wanted; 
  set begin; 
    if value = 33 then value=0; 
run;