楼主: xt_jane
1765 10

哪里错了 [推广有奖]

  • 0关注
  • 1粉丝

VIP1

大专生

63%

还不是VIP/贵宾

-

威望
0
论坛币
2165 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
495 点
帖子
36
精华
0
在线时间
33 小时
注册时间
2007-10-3
最后登录
2015-7-29

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

程序中的一部分,运行总是提示错误。初衷就是按ID来分,同ID的将DISB_AMT相加得到最终的amount,加完最后输出。
但是日志总报错,哪位大神帮忙看看哪里错了?
在线等,谢谢!!

proc sort data=tmp;
    by id  date;
if first.id then do;
    amount=amount+DISB_AMT;
if last.id then output;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:amount output outpu First Then amount 在线 程序

首先proc里面不能混入别的data step;if then do的使用也有问题;想算一个id下disb_ast的总值需要retain amount这个变量;

改成这样既可:

data tmp;
input id  DISB_AMT;
cards;
1 2
1 3
1 4
2 1
2 2
2 3
;;;
proc sort data=tmp;
by id;

data result;
set tmp;
by id;
if first.id then amount=0;
amount+DISB_AMT;
if last.id then output;
drop DISB_AMT;
run;

使用道具

藤椅
xt_jane 发表于 2015-6-16 14:18:10 |只看作者 |坛友微信交流群
sas那个石家庄人 发表于 2015-6-16 13:56
首先proc里面不能混入别的data step;if then do的使用也有问题;想算一个id下disb_ast的总值需要retain am ...
关键是还有别的字段,这只是其中的两个
客户号 放款金额 此外还有放款日期 性别 年龄 产品等
放款日期和产品都取最近的那笔贷款 该怎么写呢

使用道具

xt_jane 发表于 2015-6-16 14:18
关键是还有别的字段,这只是其中的两个
客户号 放款金额 此外还有放款日期 性别 年龄 产品等
放款日期和 ...
不太清楚你的要求了啊。。。

id gender amt
1   F        10
1  M        20
1  F         30
;;;

以这个小数据为例子

以下哪个是你想要的输出结果呢?

(1).  id  amount
        1    60

(2). id  gender amt amount
       1   F        10     .
       1   M        20     .
       1   F         30     60

(3).  id gender amt amount
        1   F       10     10
        1   M       20     30
        1   F        30     60

  

使用道具

报纸
xt_jane 发表于 2015-6-16 14:32:34 |只看作者 |坛友微信交流群
sas那个石家庄人 发表于 2015-6-16 13:56
首先proc里面不能混入别的data step;if then do的使用也有问题;想算一个id下disb_ast的总值需要retain am ...
我按你的代码试过了 没问题
data result;
   set tmp;
        if first.cust_id then  amount=0;
    amount+DISB_AMT;
        if last.cust_id then output;
        run;
但是用我的数据跑完提示first.cust_id变量没有初始化

使用道具

xt_jane 发表于 2015-6-16 14:32
我按你的代码试过了 没问题
data result;
   set tmp;
要在set tmp; 下面

加一个   by cust_id ;  

使用道具

7
lwzyq0322 发表于 2015-6-16 15:27:09 |只看作者 |坛友微信交流群
do需要有对应的end

使用道具

8
wh7064rg 发表于 2015-6-17 05:44:25 |只看作者 |坛友微信交流群
学习了

使用道具

9
xt_jane 发表于 2015-6-17 09:13:40 |只看作者 |坛友微信交流群
sas那个石家庄人 发表于 2015-6-16 14:27
不太清楚你的要求了啊。。。

id gender amt
大神在吗,昨天按你的代码试过了,没有问题
现在有另外一个问题,有三个字段,客户ID  产品类型以及放款时间MONTH
产品类型取最近的一笔贷款,放款时间取最远的一笔 该怎么写呢

使用道具

xt_jane 发表于 2015-6-17 09:13
大神在吗,昨天按你的代码试过了,没有问题
现在有另外一个问题,有三个字段,客户ID  产品类型以及放款 ...
data one;
input id $ type $ month;
cards;
1 A 4
1 B 9
1 C 10
2 G 5
2 H 9
2 N 11
3 T 7
3 Y 9
3 U 12
;;;
run;


proc sort data=one;
by id month;
;
run;

data two;
retain v;
set one;
by id;
if first.id then v=month;
if last.id then do;
month=v;
output;
end;
drop v;
run;


输出结果如下:
id type month   
1 C      4
2 N      5
3 U      7


是这个意思吗?

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 13:28