SAS Case Statement - если это, то это. остальное оставь как есть - PullRequest
0 голосов
/ 02 мая 2019

У меня есть столбец с некоторыми нежелательными данными «XX», и я хочу установить их равными 0. В противном случае сохраните данные столбца как есть. Что-то похожее на, если columnA = "XX", то 0 Else columnA. Я попытался сделать это с помощью шага proc SQL SAS, но это не сработало. Итак, ищем наиболее эффективный способ использования SAS SQL. Спасибо за любую помощь.

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

Ответы [ 3 ]

2 голосов
/ 03 мая 2019

Это должно работать в proc sql:

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

Обратите внимание, что 0 является строкой в ​​этом выражении. columnA представляется строкой (на основе сравнения). Выражение case возвращает значение с указанным типом - и в этом случае оно должно быть строкой.

0 голосов
/ 03 мая 2019

Оба предыдущих решения работают и в порядке.Действительно, решение было задано в 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;
0 голосов
/ 02 мая 2019

Это оператор CASE в SQL.

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

оригинальный код: случай, когда columnA = 'XX', тогда 0 else columnA заканчивается как ColumnA

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...