我试图在SAS EG中创建计算变量。
data data1;
input ID Type Payment_Amt;
cards;
1 Voucher $50
1 Cash $50
1 Cash $20
1 Card $20
1 Card $50
;数据需要:
/T1581-1998成品油的成品率 1.成品率为1:1的成品率
这个是可能的吗?如果我缺少任何需要的细节,请告诉我。非常感谢!
发布于 2017-03-02 09:56:45
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"前缀。
发布于 2017-03-02 17:51:02
如果类型的值是已知的、静态的且很少,则可以执行以下操作:
data data1;
input ID : 8. Type : $char10. Payment_Amt : dollar4.;
cards;
1 Voucher $50
1 Cash $50
1 Cash $20
1 Card $20
1 Card $50
2 Voucher $90
2 Cash $30
;
run;
proc sql;
create table data_want as
select ID,
sum(ifn(Type="Voucher",Payment_Amt,0)) as TotalAmtVoucher format=dollar4.,
sum(ifn(Type="Cash",Payment_Amt,0)) as TotalAmtCash format=dollar4.,
sum(ifn(Type="Card",Payment_Amt,0)) as TotalAmtCard format=dollar4.
from data1
group ID;
quit;https://stackoverflow.com/questions/42549618
复制相似问题