楼主: lulu66898
7907 8

SAS 多个条件求和和整理 [推广有奖]

  • 0关注
  • 1粉丝

博士生

32%

还不是VIP/贵宾

-

威望
0
论坛币
1671 个
通用积分
3.9627
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
643 点
帖子
48
精华
0
在线时间
465 小时
注册时间
2009-4-9
最后登录
2024-6-20

楼主
lulu66898 发表于 2015-11-10 04:45:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币


我有如下数列:
stkcd         year     a
000001    2007     1
000001    2007     2
000001    2009     1
000002    2008     1
000002    2008     1
000002    2009     2
000002    2009     1
....

我希望对每个stkcd、将同一个year中的a加总,最后得到的结果如下:
stkcd          year      a1
000001       2007     3
000001       2009     1
000002       2008     2
000002       2009     3
...

我查了下论坛,有人提出按这种代码:
data a1_1;
        set a1;
        by stkcd year;
        if first.year then cum_a=a;
                else cum_a+a;run;
但是这种代码最后得到的结果如下:

stkcd         year     a    cum_a
000001    2007     1       1
000001    2007     2        3
000001    2009     1       1
000002    2008     1       1
000002    2008     1        2
000002    2009     2        2
000002    2009     1        3
....

虽然我能得到我想要的加总数据,但是后续我还是需要进一步删除一些重复的数据。所以想问问大家,有什么方法可以一步得到我想要的表格结果,或者如果得到最后这个表格如何把那些重复没用的行(就是斜体加粗的那几行)删除呢?

二维码

扫码加我 拉你入群

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

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

关键词:条件求和 stkcd First year Data

回帖推荐

Chenny_Guo 发表于2楼  查看完整内容

set a1; by stckcd year; if first.year then total_a = 0; total_a +a; if last.year; 或者可以试一下 proc report 里面的break after year

沙发
Chenny_Guo 在职认证  学生认证  发表于 2015-11-10 05:00:43
set a1;
by stckcd year;
if first.year then total_a = 0;
total_a +a;
if last.year;

或者可以试一下 proc report 里面的break after year
已有 1 人评分论坛币 收起 理由
admin_kefu + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
lulu66898 发表于 2015-11-10 05:15:01
谢谢啦~,这个代码我试过了,但是针对同一个stkcd同一年会有重复的一些行数(如我原帖中最后一个表格的结果);
我想知道有没有什么方式可以直接得到第二个表格那样的结果哈~

板凳
lulu66898 发表于 2015-11-10 05:15:39
Chenny_Guo 发表于 2015-11-10 05:00
set a1;
by stckcd year;
if first.year then total_a = 0;
谢谢啦~,这个代码我试过了,但是针对同一个stkcd同一年会有重复的一些行数(如我原帖中最后一个表格的结果);
我想知道有没有什么方式可以直接得到第二个表格那样的结果哈~

报纸
teqel 发表于 2015-11-10 06:19:18 来自手机
你漏掉最后一行程序

地板
lulu66898 发表于 2015-11-10 06:29:25
teqel 发表于 2015-11-10 06:19
你漏掉最后一行程序
哦哦,对哦~~
发现啦~~
THX~

7
Gavin12 发表于 2015-11-10 10:51:45
data stck;
input stkcd $ year $ a;
datalines;
000001    2007     1
000001    2007     2
000001    2009     1
000002    2008     1
000002    2008     1
000002    2009     2
000002    2009     1
;
run;
proc sql;
create table summary as select stkcd,year,sum(a)
from stck
group by stkcd,year
order by stkcd,year
;
quit;

8
Bel-esprit 发表于 2015-11-10 11:36:46
用 proc sql

9
zcjnucky 发表于 2015-11-10 12:01:40
proc tabulate过程

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

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