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