楼主: wanfurui
2428 9

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

  • 0关注
  • 0粉丝

VIP

已卖:1份资源

本科生

0%

还不是VIP/贵宾

-

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

楼主
wanfurui 发表于 2010-3-7 13:44:46 |AI写论文

+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
拉您进交流群
GMT+8, 2025-12-25 17:02