楼主: jhtata
5370 14

[问答] 部分观测值求和怎么处理?【已解决】 [推广有奖]

  • 1关注
  • 0粉丝

本科生

75%

还不是VIP/贵宾

-

威望
0
论坛币
6 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
1086 点
帖子
72
精华
0
在线时间
124 小时
注册时间
2010-1-2
最后登录
2021-10-12

楼主
jhtata 发表于 2011-4-25 15:55:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求助各位:我需要将表中mnthsgn和indcd完全相同的obs合并求和,该怎么写程序呢?
二维码

扫码加我 拉你入群

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

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

关键词:怎么处理 已解决 观测值 IND obs 观测 求和

未命名.bmp (1.05 MB)

未命名.bmp

回帖推荐

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

这个适用于你的第二列相同情况,不知道是不是你需要的。 data a; input mn monyy5. ind x; format mn yymms7.; cards; sep05 27 166 sep05 27 166 oct05 27 345 oct05 27 344 oct05 27 445 oct05 27 356 oct05 27 764 nov05 27 454 nov05 27 356 nov05 27 356 nov05 27 257 dec05 27 457 dec05 27 864 dec05 27 453 dec05 27 637 jan06 27 234 jan06 27 15767 ; run; ...

本帖被以下文库推荐

沙发
zhaoping603 发表于 2011-4-25 17:01:14
这个适用于你的第二列相同情况,不知道是不是你需要的。
data a;
input mn monyy5.  ind  x;
format mn yymms7.;
cards;
sep05  27  166
sep05  27  166
oct05  27  345  
oct05  27   344
oct05  27  445
oct05  27  356
oct05  27  764
nov05  27  454
nov05  27  356
nov05  27  356
nov05  27  257
dec05  27  457
dec05  27  864
dec05  27  453
dec05  27 637
jan06  27 234
jan06  27 15767
;
run;

proc sql;
select  mn ,sum(x) as total_x  /*total_x类似你的后边的数据*/
from a
group by mn ;
quit;
已有 3 人评分经验 论坛币 热心指数 收起 理由
eijuhz + 20 精彩帖子
bakoll + 3 + 3 精彩帖子
crackman + 2 鼓励积极发帖讨论

总评分: 经验 + 23  论坛币 + 3  热心指数 + 2   查看全部评分

藤椅
jhtata 发表于 2011-4-25 21:22:15
2# zhaoping603
感谢热心回复,还有两个很弱的回复求大神顺便回答吧@@

1、sql结果是以output的形式展现的,要生成table需要什么语句呢?
2、select 和group by在这里是什么意思呀?我大概有一万多条数据,mn和in同时相同才做求和运算,这个的话要怎么搞呢?

板凳
sas_user 发表于 2011-4-26 00:14:38
3# jhtata
1. 生成table:
proc sql;
create table a as select ... from... where ...
2. select, group by是 sql 的基本语句。 select 是告诉SAS 选择哪个column;group by是按哪个Column分组
proc sql;
create table a as select *, sum(x) from work.a group by mn, in;
quit;
同时group by mn, in 就可以在这两个变量同时相同的时候求和了。
希望能有点帮助。


报纸
jhtata 发表于 2011-4-26 08:34:42
4# sas_user
感谢楼上各位的细心解答!
根据两位的指导,我能得到我要的结果了,但表里面的重复值该怎么删除呢?
我大概想到用first./last.但写不来语句...><

未命名.bmp (1.05 MB)

未命名.bmp

地板
soporaeternus 发表于 2011-4-26 08:54:57
  1. proc sql;
  2. create table aa as select  mn,in, sum(x) from work.a group by mn, in;
  3. quit;
复制代码
这样结果就应该不会有重复观测
Let them be hard, but never unjust

7
sas_user 发表于 2011-4-26 08:56:01
只要不选unique的值就好了。可以创建一个新表,group by 重复的变量,对不重复的变量求和。能解决吗?

data a;
input mn monyy5.  ind  x;
format mn yymms7.;
cards;
sep05  27  166
sep05  27  166
oct05  27  345  
oct05  27   344
oct05  27  445
oct05  27  356
oct05  27  764
nov05  27  454
nov05  27  356
nov05  27  356
nov05  27  257
dec05  27  457
dec05  27  864
dec05  27  453
dec05  27 637
jan06  27 234
jan06  27 15767
;
run;

proc sql;
select mn,ind,sum(x) as sum from a group by mn,ind;
quit;

8
qiuya 发表于 2011-4-26 08:57:26
用普通的data step 合并 retain 和 first。xxx 也能写, 很容易懂。
5楼的问题, 楼主你先 proc sort一下, 然后保留 last observation就可以了,
关键语句 大概就是 if last。xxx then output;

如果你愿意, 可以把这个数据集上传一下, 我帮你写:-)

9
jhtata 发表于 2011-4-26 09:07:21
7# sas_user
谢谢ls两位,搞出来了~!

不过搞不明白为啥之前是错的,就差了一点点的说><

不过还是很满意了~ 谁让我写程序向来差呢>< 呵呵~ 继续自学用SAS做panel data...

10
jhtata 发表于 2011-4-26 09:11:09
8# qiuya
谢谢mm啦~ 那个问题我已经搞定了~ sql确实可以直接达成我的目的的,是我不会用
if last. then output 我刚刚也搜到了,但是没有找到直接放到table里的办法...

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

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