楼主: xiaoxiahu0571
1971 8

请教sas问题 [推广有奖]

  • 0关注
  • 0粉丝

本科生

86%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
0
学术水平
3 点
热心指数
3 点
信用等级
1 点
经验
792 点
帖子
53
精华
0
在线时间
162 小时
注册时间
2009-10-19
最后登录
2017-1-24

楼主
xiaoxiahu0571 发表于 2010-9-2 09:48:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data a;
  input company date:yymmn6. sales;
  format date yymmn6.;
  datalines;
1001 200509 20
1001 200603 30
1016 200603 451
1016 200606 521
1016 200609 358
1016 200612 650  
;
run;
proc sort data=a;
by company date;
run;
data c;
set a;
by company date;
if _n_=1 then date2=date;
else date2=lag(date);
y=intck("month",date2,date );
run;

这里面为什么date2第二行是有缺失值的?请教,谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:SAS问题 company compan format yymmn 请教 SAS

回帖推荐

crackman 发表于6楼  查看完整内容

data a; input company date:yymmn6. sales; format date yymmn6.; datalines; 1001 200509 20 1001 200603 30 1016 200603 451 1016 200606 521 1016 200609 358 1016 200612 650 ; run; proc sort data=a; by company date; run; data c; set a; by company date; retain date2; date2=lag(date); if _n_=1 then date2=date; y=intck("month",date2,date ); run;

本帖被以下文库推荐

沙发
alida2002 发表于 2010-9-2 09:52:47
努力回帖 勤工俭学

藤椅
soporaeternus 发表于 2010-9-2 10:18:28
SAS HELP:
The queue for LAGn is initialized with n missing values, where n is the length of the queue (for example, a LAG2 queue is initialized with two missing values). When LAGn is executed, the value at the top of the queue is removed and returned, the remaining values are shifted upwards, and the new value of the argument is placed at the bottom of the queue. Hence, missing values are returned for the first n executions of LAGn, after which the lagged values of the argument begin to appear.
你的代码当_N_=2首次执行,故此时return的为缺失值。一般调用lagn队列都是在初始就赋给一个变量,再进行操作。
Let them be hard, but never unjust

板凳
lwien007 发表于 2010-9-2 10:25:21
一般不在条件语句中使用lag函数

报纸
soporaeternus 发表于 2010-9-2 10:27:25
先赋值,再使用,多注意点,就可以了......
已有 1 人评分学术水平 热心指数 收起 理由
pobel + 1 + 1 我很赞同

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

Let them be hard, but never unjust

地板
crackman 发表于 2010-9-2 10:43:32
data a;
  input company date:yymmn6. sales;
  format date yymmn6.;
  datalines;
1001 200509 20
1001 200603 30
1016 200603 451
1016 200606 521
1016 200609 358
1016 200612 650  
;
run;
proc sort data=a;
by company date;
run;
data c;
set a;
by company date;
retain date2;
date2=lag(date);
if _n_=1 then date2=date;
y=intck("month",date2,date );
run;
已有 2 人评分经验 论坛币 学术水平 热心指数 收起 理由
bakoll + 3 + 3 精彩帖子
pobel + 1 + 1 我很赞同

总评分: 经验 + 3  论坛币 + 3  学术水平 + 1  热心指数 + 1   查看全部评分

7
crackman 发表于 2010-9-2 10:46:13
楼问的问题处在_N_=1这个里面
因为ELSE之后,就是从_N_=2开始了,那么你第二行肯定就是一个缺失值了

8
addahello 发表于 2010-9-17 19:12:37
学习学习

9
woaiwojia9 发表于 2010-9-24 13:10:49
It is very good to provide detailed code for beginner like me. Thanks.
crackman 发表于 2010-9-2 10:43
data a;
  input company date:yymmn6. sales;
  format date yymmn6.;
  datalines;
1001 200509 20
1001 200603 30
1016 200603 451
1016 200606 521
1016 200609 358
1016 200612 650  
;
run;
proc sort data=a;
by company date;
run;
data c;
set a;
by company date;
retain date2;
date2=lag(date);
if _n_=1 then date2=date;
y=intck("month",date2,date );
run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 21:53