全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1161 4
2015-11-26
data old;
input start end;
datalines;
1 1
1 2
1 3
1 4
1 5
1 6
1 7
2 1
2 2
3 1
3 2
3 3
3 4
3 5
;
run;

data new;
set old;
by start;
array x(*) endlag1-endlag3;
endlag1=lag1(end);
endlag2=lag2(end);
endlag3=lag3(end);
if first.start then count=1;
do i=count to dim(x);
x(i)=.;
end;
count+1;
run;
proc print data=new;
run;


上述程序运行结果如下:
aaa.bmp
请问:
变量i的第一个观测值怎么是4,而不是3呢?
求教各位大神!感激不尽!

二维码

扫码加我 拉你入群

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

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

全部回复
2015-11-27 00:34:18
do 循环最后i会多1,你把它循环后减掉就行了
二维码

扫码加我 拉你入群

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

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

2015-11-27 00:45:48
do循环是这样的, 以下面程序为例:
data a;
do a=1 to 3;
end;
output;
run;
最后的结果只有一条, a的值为4.
do循环执行到最后, 在最后一次执行的数值上再+1, 然后退出循环.
二维码

扫码加我 拉你入群

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

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

2015-11-27 09:01:28
吕小布韦 发表于 2015-11-27 00:45
do循环是这样的, 以下面程序为例:
data a;
do a=1 to 3;
原来如此,3Q!
二维码

扫码加我 拉你入群

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

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

2015-11-27 09:02:34
teqel 发表于 2015-11-27 00:34
do 循环最后i会多1,你把它循环后减掉就行了
3Q!
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群