Я изучаю proc sql в SAS. Когда я использую функцию суммы sql, я понимаю, что если добавить оператор сравнения, результатом будет количество строк, а не сумма по вертикали. Как я могу получить вертикальную сумму и каков механизм указанного суммирования?
data apple;
input target;
cards;
0
1
3
5
;
run;
proc sql;
select sum(target ge 3)
from apple;
quit;
ожидаемый результат будет 3+5=8;
фактический результат 2
proc sql;
select sum(target)
from apple
where target ge 3;
quit;
Я полагаю, что ваш код оценивал (target gt 3) как логическое выражение, поэтому, поскольку в SAS TRUE=1 и FALSE=0, функция суммы добавляла 0,0,1,1.
Решение от Крейга на самом деле лучше, но с случай, когда еще конец вы можете делать то, что пытались.
proc sql;
select sum(case when target ge 3 then target else 0 end)
from apple;
quit;
Спасибо, Ли, ваш вклад и вклад Крейга мне очень помогли.