楼主: GIS小生
1392 6

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

  • 0关注
  • 0粉丝

小学生

78%

还不是VIP/贵宾

-

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

楼主
GIS小生 发表于 2018-5-17 19:29:08 |AI写论文

+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
拉您进交流群
GMT+8, 2026-2-17 15:40