楼主: limuqi
1671 6

[原创博文] 怎样去掉连续数据 sas [推广有奖]

  • 1关注
  • 2粉丝

本科生

27%

还不是VIP/贵宾

-

威望
0
论坛币
464 个
通用积分
0.0600
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
838 点
帖子
57
精华
0
在线时间
54 小时
注册时间
2011-8-2
最后登录
2016-1-5

楼主
limuqi 发表于 2011-8-22 07:23:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有一组数据,
原有数据                                    期望数据
1                                                       1                  
2                                                       2
2                                                       2
3                                                       3
6                                                       6
3                                                       .
3                                                       .
3                                                       .
5                                                       5
6                                                       .
6                                                       .
6                                                       .
6                                                       .
8                                                       8
我想去掉三个以上连续一样的数据,把他们的值改成missing value .想问具体怎么实现,谢谢
二维码

扫码加我 拉你入群

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

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

关键词:missing value SSIN Miss alue

沙发
bobguy 发表于 2011-8-22 08:28:52
Running the program below will give you the desired results.


data t1;
input x;
cards;
1
2
2
3
6
3
3
3
5
6
6
6
6
8
;

data t2;
   do i=1 by 1 until(last.x);
      set t1;
          by x notsorted;
          if first.x then cnt=0;
          cnt+1;
   end;
   do i=0 by 1 until(last.x);
      set t1;
          by x notsorted;
          x_old=x;
          if cnt>=3 then x=.;
          output;
   end;
   keep x x_old;
run;

proc print;run;
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
C100 + 1 + 1 + 1 好··
pobel + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

藤椅
honghejing 发表于 2011-8-22 16:56:48
data a;
input a;
n=_n_;
cards;
1
2
2
3
6
3
3
3
5
6
6
6
6
8
;
run;

proc sql;
create table b as
select a,case when count(*)>=3 then .
else  a
end as b from a
group by a
order by n
;
quit;

板凳
limuqi 发表于 2011-8-23 01:26:13
bobguy 发表于 2011-8-22 08:28
Running the program below will give you the desired results.
原来first. last. unsorted 还有这么大的用处,学习了

报纸
limuqi 发表于 2011-8-23 01:27:47
honghejing 发表于 2011-8-22 16:56
data a;
input a;
n=_n_;
非常感谢,学到了不同的思路

地板
bobguy 发表于 2011-8-23 07:50:21
honghejing 发表于 2011-8-22 16:56
data a;
input a;
n=_n_;
The result is not EXACT what he wanted. I believe it is not quite easy to use SQL solving this problem because SQL is not designed to handle data sequentially.

7
honghejing 发表于 2011-8-23 11:04:18
bobguy 发表于 2011-8-23 07:50
The result is not EXACT what he wanted. I believe it is not quite easy to use SQL solving this pro ...
我觉得楼主应该先排好序了

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

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