楼主: coatwaist
3531 6

请教SAS怎么进行 “行”的数据筛选 [推广有奖]

  • 0关注
  • 1粉丝

初中生

85%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
5 点
经验
48 点
帖子
7
精华
0
在线时间
32 小时
注册时间
2012-8-6
最后登录
2013-6-29

楼主
coatwaist 发表于 2013-3-8 00:58:20 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
比如说我有下列数据,数据已经排好顺序了。

日期                数值        类型

。。。。。

。。。。。

2000-01 -01    12         0

2000-01-02     15         1

2000-01-05     45         0

。。。(中间省略若干行,这个日期不是连续的,中间会有空缺的,并且空缺的我也不需要,我只要这张表里有的)

2000-02-03     23         1

。。。。。

。。。。。

。。。。。


比如说我想挑选出类型为1的那一行数据的前后各二十行之内的数据,单独挑选出来成一张表。你看这种怎么处理呢?

谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:数据筛选 怎么处理

回帖推荐

yongyitian 发表于4楼  查看完整内容

data test; /* create a sample dataset */ format date date1 date2 date9.; date1 = '01jan2000'd; /* start of random date */ date2 = '31dec2012'd; /* end of random date */ do i = 1 to 1000; /* create 1000 sample */ date = date1 + floor(ranuni(12345)*(date2-date1+1)); /* create random date */ value = int(ranuni(345)*100); /* r ...
已有 1 人评分信用等级 收起 理由
zmls + 5 鼓励积极发帖讨论

总评分: 信用等级 + 5   查看全部评分

沙发
zmls 发表于 2013-3-8 00:59:47
大牛赶紧过来啊   

藤椅
RichardBrown 发表于 2013-3-8 02:47:34
xiangxiang

板凳
yongyitian 发表于 2013-3-8 08:58:23
data test;  /* create a sample dataset */
    format date date1 date2 date9.;
        date1 = '01jan2000'd;     /* start of random date */
        date2 = '31dec2012'd;     /* end of random date  */
     do i = 1 to 1000;            /* create 1000 sample  */
         date = date1 + floor(ranuni(12345)*(date2-date1+1));  /* create random date */
        value = int(ranuni(345)*100);      /* random value between 1 and 100) */           
         type =  floor(ranuni(789)*10);    /* random value of type between 1 to 10 */
       output;
     end;
   drop date1 date2 i;
run;
proc sort data=test nodupkey; /* remove the duplicated date */
    by date;
run;

data test_n;
    set test;
    n=_n_;    /* add row number n */
run;

data Test_OutName (drop=n1 n2);
    set test_n;
       if type = 1 and n > 20 then do;
            n1 = n-20;
            n2 = n+20;
       OutName = cats("Out", put(n,3.));  
call execute('data '||OutName||'; set test_n(firstobs='||n1||' obs='||n2||'); run;');
       end;
run;
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
a6566792 + 1 + 1 + 1 精彩帖子
Imasasor + 80 + 80 + 2 + 3 + 1 精彩帖子

总评分: 经验 + 80  论坛币 + 80  学术水平 + 3  热心指数 + 4  信用等级 + 2   查看全部评分

报纸
fishsinging 发表于 2013-3-8 15:39:35
楼上是牛人,后面有的地方没看懂。我的笨法子就是加入计数器后,下面再用set 建立需要的表格,
上面条件设定和楼上一样,就是后面if n gt n1 and n lt n2 then output;
班门弄斧了。

地板
RichardBrown 发表于 2013-3-10 02:02:03
yongyitian 发表于 2013-3-8 08:58
data test;  /* create a sample dataset */
    format date date1 date2 date9.;
        date1 = '01j ...
niu! Dingding!

7
coatwaist 发表于 2013-3-10 02:44:41
赞美yongyitian大牛。结合https://bbs.pinggu.org/thread-1497762-1-1.html帖子,我总算解决了目前的问题。

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

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