楼主: jintianxiu
2762 13

sas求助:问题拗口,请见贴~看明白的同学留言哪 [推广有奖]

  • 2关注
  • 0粉丝

本科生

8%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
590 点
帖子
81
精华
0
在线时间
38 小时
注册时间
2010-3-6
最后登录
2012-9-21

楼主
jintianxiu 发表于 2011-12-7 14:47:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
问题是:数据是20年股票的日数据,按照将公司按照行业分类,求出每天每个行业中去除i公司的日平均收益率。。。很绕口。。。简化一下就是,有7个数据 R1 R2 R3 R4...,,编程求的X的值。由于数量巨大,这里进行了简化。。。我尽力表述清楚了我的问题,希望各位帮忙啦~SIC表示行业分类,X表示去除i的行业均值,R表示收益率。。n  r     SIC  X
1 R1    1   (R2+R3)/2
2 R2    1   (R1+R3)/2
3 R3    1  (R1+R2)/2
4 R4    2  (R5+R6+R7)/3

5 R5    2  (R4+R6+R7)/3
6 R6    2  (R4+R5+R7)/3
7 R7    2   (R4+R5+R6)/3







二维码

扫码加我 拉你入群

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

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

关键词:SAS求助 行业分类 我的问题 行业均值 收益率 行业 公司 编程 行业分类 收益率

回帖推荐

xum138 发表于4楼  查看完整内容

看明白了,你试试这段程序,比较啰嗦,你再试试有没有其他简单的方法。 data a ; input SIC $ X; DATALINES; 1 2 1 3 1 4 2 5 2 6 2 7 2 8 ; RUN; PROC SUMMARY DATA=A nway; CLASS SIC; var x; OUTPUT OUT=AA(drop=_freq_ _type_) MEAN=average N=number; run; data ab( rename=(average2=average)); merge a aa; by sic; average2=((average*number)-X)/(number-1); drop average number; run;

本帖被以下文库推荐

沙发
xum138 发表于 2011-12-7 15:45:35
还没没有弄明白问题,能说的再清楚一点吗?
给自己一个机会吧?!

藤椅
jintianxiu 发表于 2011-12-7 16:15:14
xum138 发表于 2011-12-7 15:45
还没没有弄明白问题,能说的再清楚一点吗?
就是编写程序求变量X的值,X的值 我将表达式写下了在数据中。你会发现,对于观测值1,X是所在组中均值(ommited 1r1);对于观测值2,X是其所在组中均值(ommited r2)...这样的一个规律。。。

板凳
xum138 发表于 2011-12-7 16:41:11
看明白了,你试试这段程序,比较啰嗦,你再试试有没有其他简单的方法。
data a ;
input SIC $ X;
DATALINES;
1 2
1 3
1 4
2 5
2 6
2 7
2 8
;
RUN;
PROC SUMMARY DATA=A nway;
CLASS SIC;
var x;
OUTPUT OUT=AA(drop=_freq_ _type_) MEAN=average N=number;
run;

data ab( rename=(average2=average));
merge a aa;
by sic;
average2=((average*number)-X)/(number-1);
drop average number;
run;
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
bakoll + 3 + 3 精彩帖子
jintianxiu + 1 + 1 + 1 好的意见建议

总评分: 经验 + 3  论坛币 + 3  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

给自己一个机会吧?!

报纸
jintianxiu 发表于 2011-12-7 17:02:40
xum138 发表于 2011-12-7 16:41
看明白了,你试试这段程序,比较啰嗦,你再试试有没有其他简单的方法。
data a ;
input SIC $ X;
强大!!应该可以,我试试。谢啦~~

地板
SASRETURN 发表于 2011-12-7 17:23:55
SQL:
建一个Y变量 =SUM of R Group by SIC
建一个Z变量 =Number of R Group by SIC
Join the table on  SIC
X 可解析为 (Y-r)/(Z-1)

7
shenliang_111 发表于 2011-12-7 18:53:57
try this:
  1. data rt(drop=sum count);
  2. sum=0;
  3. do _n_=1 by 1 until(last.sic);
  4. set a;
  5. by sic;
  6. sum+x;
  7. if last.sic then count=_n_;
  8. end;
  9. do _n_=1 to _n_;
  10. set a;
  11. average=(sum-x)/(count-1);
  12. output;
  13. end;
  14. run;
复制代码

8
soporaeternus 发表于 2011-12-8 09:43:40
SQL自连,按R,每个R连上相同SIC且不等于自己的,算个均值
Let them be hard, but never unjust

9
baoaibaobao 发表于 2011-12-8 10:55:31
  1. data have;
  2. input n r sic @@;
  3. cards;
  4. 1 3 1 2 5 1 3 7 1 4 2 2 5 4 2 6 6 2 7 8 2
  5. ;
  6. proc sql;
  7. create table want as
  8.         select distinct a.n,a.r,a.sic,mean(b.r) as x
  9.                 from have a join have b on a.r ne b.r
  10.                         and a.sic=b.sic group by a.r order by a.n;
  11. quit;
复制代码

10
shenliang_111 发表于 2011-12-8 12:31:26
baoaibaobao 发表于 2011-12-8 10:55
说一点比较粗浅的见解:

如果r的值在SIC组内有重复值(这完全可能),该段程序就可能有错误了!

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

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