Payment_Amt 的输入数据将是前面带有 $ 的字符变量。使用起来真的很尴尬。我建议使用数字金额并使用dollar格式将它们显示为货币值。
但是,如果您的数据已经是字符格式,您可以使用以下方法将它们转换为数字:
data data1;
set data1;
Payment_Amt2 = input(substr(Payment_Amt,2),best.);
format Payment_Amt2 dollar3.;
drop Payment_Amt;
rename Payment_Amt2 = Payment_Amt;
运行;
这仅使用substr()获取字符串中$之后的值,然后使用input()函数将它们转换为数值。
要获得总数,您可以使用proc sql,然后转置数据:
proc sql;
create table want0 as
select distinct id, type, sum(payment_amt) as total
from data1
group by type;
quit;
proc transpose data = want0 out = want(drop = _name_) prefix = TotalAmt;
by id;
id type;
run;
proc sql 步骤将通过 group by 语句对特定 type 的所有值求和。然后,您可以使用proc transpose 将数据转换为您想要的格式。使用prefix= 选项允许您在变量名中指定"TotalAmt" 前缀。