全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2371 9
2010-03-07
编写程序:六个变量的d1-d6,数据如下:
1   2   7   23   100   1000
2   3   33   54   56    1000
3   .    4    6      44    100
要求:如果相邻数据小于等于7,则置为缺失。
输出结果如下:
1    .     .      23    100     1000
.     .     33    .        .         1000  
3    .     .      .         44      100

data;
input d1-d6;
array s d1-d6;
do i=1 to 6;
if s(i)-s(i-1)<=7 then s(i)=s(i-1)=.;
end;
cards;
1 2 7 23 100 1000
2 3 33 54 56 1000
3 . 4 6 44 100
;
run;
proc print;
run;
高手帮我看一下,是哪里错了。谢谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-3-7 13:50:07
if s(i)-s(i-1)<=7 then s(i)=s(i-1)=.;
超出了数组的下界了
二维码

扫码加我 拉你入群

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

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

2010-3-7 14:00:31
data test;
input d1-d6;
array s d1-d6;
do i=1 to dim(s);
do j=i+1 to dim(s);
if s(j)-s(i)<=7 and s(j) ^=. and s(i) ^=. then s(i)=s(j)=.;
end;
end;
cards;
1 2 7 23 100 1000
2 3 33 54 56 1000
3 . 4 6 44   100
;
run;
data a;
set test;
array s d1-d6;
do i=1 to dim(s);
if s(i)=0 then s(i)=.;
end;
proc print;
run;
二维码

扫码加我 拉你入群

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

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

2010-3-7 14:02:32
谢谢crackman!
二维码

扫码加我 拉你入群

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

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

2010-3-7 14:21:30
good one...
二维码

扫码加我 拉你入群

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

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

2010-3-7 15:40:39
data test;
input d1-d6;
array s d1-d6;
do i=1 to dim(s);
j=i+1;
if s(j)-s(i)<=7 and j<=dim(s) and s(j) ^=. and s(i) ^=. then s(i)=s(j)=.;
end;
end;
cards;
1 2 7 23 100 1000
2 3 33 54 56 1000
3 . 4 6 44   100
;
run;
data a;
set test;
array s d1-d6;
do i=1 to dim(s);
if s(i)=0 then s(i)=.;
end;
proc print;
run;
这两个程序有一点差别
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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