在SAS EG中有条件变量的变量
问题描述:
我想在SAS EG中创建计算变量。在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
;
数据想:
ID TotalAmtVoucher TotalAmtCash TotalAmtCard
$ 50 $ 70 $ 70
这可能吗? 请让我知道,如果我缺乏任何细节需要。 非常感谢!
答
您输入的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
步将通过声明组总结特定type
的所有值。然后,您可以使用proc transpose
将数据转换为您想要的格式。使用prefix=
选项可让您在变量名称中指定"TotalAmt"
前缀。
答
如果类型的值是已知的,静态的,很少有你可以做到以下几点:
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;