楼主: suzhzh
2785 9

[原创博文] 如何给每个ID最后增加一个新的观测值 [推广有奖]

已卖:895份资源

学科带头人

54%

还不是VIP/贵宾

-

威望
0
论坛币
17364 个
通用积分
756.5254
学术水平
70 点
热心指数
87 点
信用等级
52 点
经验
532 点
帖子
3228
精华
0
在线时间
1293 小时
注册时间
2009-9-18
最后登录
2025-10-13

楼主
suzhzh 发表于 2011-8-22 15:46:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位朋友,我现在又个问题:
原数据程序为:
data a;
input id name$ score;
datalines;
1 chinese 20
1 math    90
1 politics 89
2 chinese 30
2 math    30
2 politics 77
3 chinese 30
3 math 40
3 politics 70
;
run;
用proc print 后可以得到:   Obs    id    name        score                                             
                                                                                                                        
                                              1      1    chinese       20                                             
                                              2      1    math          90                                             
                                              3      1    politics      89                                             
                                              4      2    chinese       30                                             
                                              5      2    math          30                                             
                                              6      2    politics      77                                             
                                              7      3    chinese       30                                             
                                              8      3    math          40                                             
                                              9      3    politics      70      
我的问题是如何给每个id 添加一个新的观测ratio,ratio计算是相应id的chinese 对应的score除以politics对应的score。比如对于id=1,ratio=20/89;对于id=2,ratio=30/77,如此下去。这个程序当如何实现呢?如果先转置的话会很麻烦,有没有简单的方法呢?谢谢哟。
二维码

扫码加我 拉你入群

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

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

关键词:观测值 Politics Chinese politic ratio politics 朋友 如何 程序

本帖被以下文库推荐

沙发
honghejing 发表于 2011-8-22 15:56:30
可以先用transpose转置,然后计算,再merge一起
已有 1 人评分学术水平 热心指数 收起 理由
suzhzh + 1 + 1 热心帮助其他会员并且有很高的水平

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

藤椅
suzhzh 发表于 2011-8-22 16:01:39
您好,我的程序不会写,能上传上来程序吗?
谢谢

板凳
soporaeternus 发表于 2011-8-22 16:05:49
  1. data b;
  2.         retain _t1 _t2;
  3.         set a;
  4.         by id;
  5.         if first.id then do;
  6.                 _t1=.;
  7.                 _t2=.;
  8.         end;
  9.         if upcase(name)="CHINESE" then _t1=score;
  10.         if upcase(name)="POLITICS" then _t2=score;
  11.         output;
  12.         if last.id then do;
  13.                 name="ratio";
  14.                 score=_t1/_t2;
  15.                 output;
  16.         end;
  17.         drop _t1 _t2;
  18. run;
复制代码
已有 1 人评分学术水平 热心指数 收起 理由
suzhzh + 1 + 1 热心帮助,较高的sas造诣

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

Let them be hard, but never unjust

报纸
tj0412ymy 发表于 2011-8-22 16:25:02
  1. PROC SQL;
  2. CREATE TABLE AA AS
  3. SELECT DISTINCT C.*,A.score/B.score AS RATIO FORMAT=PERCENT6.0
  4. FROM A AS A, A AS B,A AS C
  5. WHERE A.NAME='chinese' AND B.NAME='politics' AND A.ID=B.ID
  6. ;
  7. QUIT;

  8. DATA BB;
  9. SET AA;
  10. DO i=1 TO 3;
  11. IF _N_>(i-1)*9 AND _N_<=i*9 AND MOD(_N_,3)=MOD(i,3) THEN OUTPUT;
  12. END;
  13. DROP i;
  14. RUN;
复制代码
对SAS和统计方面感兴趣的朋友,请加SAS学习和认证讨论群:169157207。欢迎在群上讨论!

地板
suzhzh 发表于 2011-8-22 16:28:31
十分感谢soporaeternus的指导,向您致敬!呵呵。

7
suzhzh 发表于 2011-8-22 17:17:15
tj0412ymy 的结果不是我想要的结果,不过还是谢谢你了。

8
shenliang_111 发表于 2011-8-22 22:26:25
try this;
proc transpose data=a out=aa;
by id;
id name;
run;
data aa;
set aa;
ratio=round(chinese/politics,0.02);
run;
proc transpose data=aa out=aaa(rename=(_name_=name));
by id;
run;

9
Actree 发表于 2011-8-22 23:28:59
我不明白你想把这个均数的观测加到每组下面还是上面?

10
zkymath 在职认证  发表于 2011-8-24 21:46:52
data a;
input id chinese math politics;
ratio=        chinese/ politics;
datalines;
1  20   90 89
2  30   30 77
3  30   40 70
;
run;

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

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