楼主: zs694461601
2255 12

[原创博文] 求助:数据分组处理 [推广有奖]

  • 4关注
  • 11粉丝

已卖:2378份资源

副教授

70%

还不是VIP/贵宾

-

威望
0
论坛币
11884 个
通用积分
15.2258
学术水平
15 点
热心指数
23 点
信用等级
11 点
经验
86033 点
帖子
350
精华
0
在线时间
1359 小时
注册时间
2010-1-4
最后登录
2022-1-27

楼主
zs694461601 发表于 2012-2-20 15:10:24 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
分组处理var1,如果组中var2的最后一个值为6,则输出新的数据集new1(否则输出新的数据集new2).用data步怎么编呢?
下面是数据的形式:
Obsvar1var2
1Az
2Ay
3Ax
4At
5Bs
6Bd
7Cf
8Cg
9Ch
二维码

扫码加我 拉你入群

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

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

关键词:数据分组 data步 Data SVAR 最后一个

回帖推荐

maidenhan 发表于6楼  查看完整内容

Try this. data test01; input var1 $ var2 $; cards; A z A y A x A 6 B s B d C f C g C h ;run; data test02; set test01; fid + 1; run; proc sort data = test02; by var1 descending fid; run; data new1(drop = fid flag) new2(drop = fid flag) ; retain flag 0; set test02; by var1; if first.var1 and var2 = '6' then flag = 1; if flag = 1 then output new1; else out ...

yugao1986 发表于12楼  查看完整内容

if last.var1 then delete

本帖被以下文库推荐

沙发
zs694461601 发表于 2012-2-20 15:17:09
大家帮帮忙
只有艺术和科学能提高人,直到神圣的高度
http://blog.csdn.net/QUANT_zhang

藤椅
yugao1986 发表于 2012-2-20 15:48:59
试试吧,不知道可行:
data new1 new2;
   set new;
   by var1;
   if last.var1 & var2=6 then output new1;
   else output new2;
run;
三人行必有我师

板凳
zs694461601 发表于 2012-2-20 17:05:54
是分组的,var1中的A为一组,B,C也一样。还是不行啊,不过还是谢谢了
只有艺术和科学能提高人,直到神圣的高度
http://blog.csdn.net/QUANT_zhang

报纸
可~乐 发表于 2012-2-20 17:12:04
你上面var2不是字符型的么?怎么会有var2=6?

地板
maidenhan 发表于 2012-2-20 17:15:19
Try this.

data test01;
        input var1 $ var2 $;
cards;
A z
A y
A x
A 6
B s
B d
C f
C g
C h
;run;
data test02;
        set test01;
        fid + 1;
run;
proc sort data = test02;
        by var1 descending fid;
run;
data new1(drop = fid flag)
          new2(drop = fid flag) ;
        retain flag 0;
        set test02;
        by var1;
        if first.var1 and var2 = '6' then flag = 1;
        if flag = 1 then output new1;
        else output new2;
        if last.var1 then flag = 0;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

7
zs694461601 发表于 2012-2-20 19:14:05
变量1  变量2
001      12
001       1
001       2
002       2
002       3
002       4
003       2
003       3
003       4
003       5
003       6
其中,003中变量2的最后一个值为6,就把003这一组挑选出来,就是这么个意思
只有艺术和科学能提高人,直到神圣的高度
http://blog.csdn.net/QUANT_zhang

8
zs694461601 发表于 2012-2-20 19:14:32
maidenhan 发表于 2012-2-20 17:15
Try this.

data test01;
变量1  变量2
001      12
001       1
001       2
002       2
002       3
002       4
003       2
003       3
003       4
003       5
003       6
其中,003中变量2的最后一个值为6,就把003这一组挑选出来,就是这么个意思
只有艺术和科学能提高人,直到神圣的高度
http://blog.csdn.net/QUANT_zhang

9
zs694461601 发表于 2012-2-20 19:14:48
yugao1986 发表于 2012-2-20 15:48
试试吧,不知道可行:
data new1 new2;
   set new;
变量1  变量2
001      12
001       1
001       2
002       2
002       3
002       4
003       2
003       3
003       4
003       5
003       6
其中,003中变量2的最后一个值为6,就把003这一组挑选出来,就是这么个意思
只有艺术和科学能提高人,直到神圣的高度
http://blog.csdn.net/QUANT_zhang

10
yugao1986 发表于 2012-2-20 19:50:04
data new;
   input var1 var2;
   cards;
001      12
001       1
001       2
002       2
002       3
002       4
003       2
003       3
003       4
003       5
003       6
;
run;
data new1;
    set new;
        by var1;
        if last.var1 & var2=6 then output;
run;
proc sql;
    create table need as
        select new.var1,new.var2
        from new
        inner join
        new1
        on new.var1=new1.var1;
quit;
proc print data=need;run;
三人行必有我师

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

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