Вы упомянули SUM
, так что есть две возможности: SQL
SUM
для группы агрегирования или SUM
statisti c в процедуре SAS, такой как Proc MEANS
, SUMMARY
, UNIVARIATE
, REPORT
, TABULATE
, et c.
In SQL a SUM
вычисленного значения (преобразование из символьного представления числа в число c значение) может быть выполнено напрямую. Предположим, что рассматриваемый столбец имеет имя amount
data have;
length amount $2;
input amount @@; datalines;
8 4 13 NA NA 3 5
;
proc sql;
create table want as
select
SUM(
input(amount,?best12.) /* computed value is conversion through INPUT() */
) as amount_total
%* The ? before the informat (best12.) suppresses log messages such as
%* NOTE: Invalid string and
%* NOTE: Invalid argument;
from have;
Для других процедур им потребуется источник данных, который доставляет столбец, преобразованный в переменную цифр c или новую переменную цифр c. на основе исходной символьной переменной. Есть два способа предоставить этот источник данных:
* view;
data have_view / view=have_view;
set have;
amount_num = input(amount,?best12.);
run;
proc means noprint data=have_view;
var amount_num;
output out=want_2 sum=amount_total;
run;
* or data;
data have_num;
set have;
amount_num = input(amount,?best12.);
run;
proc means noprint data=have_num;
var amount_num;
output out=want_2 sum=amount_total;
run;
См. SAS Pro c Импорт CSV и отсутствующих данных для макроса, который преобразует символьную переменную вместо и не создает новые имена переменных. При таком макросе ненулевые c исходные значения (такие как NA
, ??
) «теряются», поскольку они становятся пропущенными значениями (.
)