楼主: wanfurui
2173 9

[原创博文] 求助SAS编写程序:相邻数据小于7,则置为缺失 [推广有奖]

  • 0关注
  • 0粉丝

VIP

本科生

0%

还不是VIP/贵宾

-

威望
0
论坛币
733 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
705 点
帖子
52
精华
0
在线时间
72 小时
注册时间
2010-2-17
最后登录
2020-11-1

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
编写程序:六个变量的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;
高手帮我看一下,是哪里错了。谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:编写程序 Input array 输出结果 Data 编写程序

回帖推荐

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

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)

本帖被以下文库推荐

沙发
crackman 发表于 2010-3-7 13:50:07 |只看作者 |坛友微信交流群
if s(i)-s(i-1)<=7 then s(i)=s(i-1)=.;
超出了数组的下界了

使用道具

藤椅
crackman 发表于 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;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

板凳
wanfurui 发表于 2010-3-7 14:02:32 |只看作者 |坛友微信交流群
谢谢crackman!

使用道具

报纸
sdu0632 发表于 2010-3-7 14:21:30 |只看作者 |坛友微信交流群
good one...

使用道具

地板
crackman 发表于 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;
这两个程序有一点差别

使用道具

7
sdu0632 发表于 2010-3-8 01:08:47 |只看作者 |坛友微信交流群
改动了下 ls程序,不用第二个data step了。但是不知道原因是什么,盼解释为什么原程序 s(i)=s(j)=0而不是定义的 missing.

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 do; s(i)=.;s(j)=.;end;
end;
end;
cards;
1 2 7 23 100 1000
2 3 33 54 56 1000
3 . 4 6 44   100
;
run;

使用道具

8
wanfurui 发表于 2010-3-8 11:01:43 |只看作者 |坛友微信交流群
怎么程序输出结果在缺失值的地方是0,0是不是就是缺失值?

使用道具

9
醉_清风 发表于 2010-3-8 12:12:09 |只看作者 |坛友微信交流群
进来学习 array很久不用了
从来不需要想起 永远也不会忘记

使用道具

10
crackman 发表于 2010-3-8 12:16:14 |只看作者 |坛友微信交流群
data test;
input d1-d6;
array s d1-d6;
do i=1 to dim(s)-1;
j=i+1;
if s(j)-s(i)<=7 and j<dim(s) and s(j) ^=. and s(i) ^=. then do; 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;

使用道具

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

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

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

GMT+8, 2024-11-5 19:41