楼主: GIS小生
1119 6

[问答] 怎么求组内大于其值的其他值的和? [推广有奖]

  • 0关注
  • 0粉丝

小学生

78%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
49 点
帖子
4
精华
0
在线时间
14 小时
注册时间
2016-4-19
最后登录
2021-12-8

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
a  b

1  4   

1  3
1  5
1  2
2  5
2  6
2  4
怎么求组1,组2中组内大于b值的其他和?
即1   5
   1   9(4+5)
   1   0
   1  12(4+3+5)
   2   6
   2   0
   2  11(5+6)



二维码

扫码加我 拉你入群

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

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


沙发
流水不朽 发表于 2018-5-18 09:20:53 |只看作者 |坛友微信交流群
data        tmp;
        infile datalines;
        length a b 8.;
        input a b ;
datalines;
1  4
1  3
1  5
1  2
2  5
2  6
2  4
;
run;


proc sort data=tmp out=tmp_01;by a descending b;run;

data        tmp_02;
        set tmp_01;
         by a descending b;
format c 8.;
retain c;
         if first.a then
                 c=b;
   else c=sum(b,c);
                   d=sum(c,-b);
run;

proc sql;
        create table result as
        select a1.a
                  ,a1.b
                  ,b1.d
          from tmp a1
                     left outer join
                   tmp_02 b1
                on a1.a=b1.a
           and a1.b=b1.b
           ;
quit;

使用道具

藤椅
GIS小生 发表于 2018-5-18 12:29:21 |只看作者 |坛友微信交流群
流水不朽 发表于 2018-5-18 09:20
data        tmp;
        infile datalines;
        length a b 8.;
大神太厉害啦,好奇一下,假如我把第一行4换成5,那它的值是5,该怎么办呀?

使用道具

板凳
流水不朽 发表于 2018-5-18 12:37:07 |只看作者 |坛友微信交流群
GIS小生 发表于 2018-5-18 12:29
大神太厉害啦,好奇一下,假如我把第一行4换成5,那它的值是5,该怎么办呀?
data        tmp;
        infile datalines;
        length a b 8.;
        input a b ;
datalines;
1  5
1  3
1  5
1  2
2  5
2  6
2  4
;
run;


proc sort data=tmp out=tmp_01;by a descending b;run;

data        tmp_02;
        set tmp_01;
         by a descending b;
format c 8.;
retain c;
         if first.a then
                 c=b;
   else c=sum(b,c);
                   d=sum(c,-b);
run;

/*增加代码段*/
data        tmp_03;
        set tmp_02;
         by a descending b;
         if first.b;
run;

proc sql;
        create table result as
        select a1.a
                  ,a1.b
                  ,b1.d
          from tmp a1
                     left outer join
                   tmp_03 b1
                on a1.a=b1.a
           and a1.b=b1.b
           ;
quit;

使用道具

报纸
GIS小生 发表于 2018-5-18 13:24:46 |只看作者 |坛友微信交流群
大神太厉害了,这都可以,但可能我举得例子不具有普遍性,我想问的是怎么把重复选项不加进去
好比数据如下:
1  5
1  3
1  5
1  2
2  5
2  6
2  4
2  5
2  4
2  4

使用道具

地板
流水不朽 发表于 2018-5-18 16:24:37 |只看作者 |坛友微信交流群
GIS小生 发表于 2018-5-18 13:24
大神太厉害了,这都可以,但可能我举得例子不具有普遍性,我想问的是怎么把重复选项不加进去
好比数据如下 ...
修改一下这句:
proc sort data=tmp out=tmp_01 nodupkey;by a descending b;run;

使用道具

7
learsaas 发表于 2018-6-20 14:25:55 |只看作者 |坛友微信交流群
proc sort + datastep就能完成了。

使用道具

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

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

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

GMT+8, 2024-4-26 16:48