首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAS EG中的有条件和变量

SAS EG中的有条件和变量
EN

Stack Overflow用户
提问于 2017-03-02 07:52:40
回答 2查看 313关注 0票数 0

我试图在SAS EG中创建计算变量。

代码语言:javascript
复制
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的成品率

这个是可能的吗?如果我缺少任何需要的细节,请告诉我。非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2017-03-02 09:56:45

Payment_Amt的输入数据将是一个字符变量,前面有一个$。这将是非常尴尬的工作。我建议使用数字金额并使用dollar格式将其显示为货币值。

但是,如果您的数据已经是字符格式的,则可以使用以下方法将它们转换为数字:

代码语言:javascript
复制
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,然后转置数据:

代码语言:javascript
复制
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"前缀。

票数 1
EN

Stack Overflow用户

发布于 2017-03-02 17:51:02

如果类型的值是已知的、静态的且很少,则可以执行以下操作:

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42549618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档