SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: shiyiming
打印 上一主题 下一主题

望高手指教

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
11#
 楼主| 发表于 2008-3-16 09:55:10 | 只看该作者

Re: 望高手指教

首先帮你该了下代码
[code:1gfs0pw5]
libname out 'D:\DATA\out';
data top20_04_call;
set out.top20_04_call OUT.top20_05_call;
run;
proc means data=top20_04_call nway noprint;
class ticker date;
var volume;
output out=top20_04_call1(drop=_type_ _freq_) mean(volume)=Volume;
run;



data  MSFT_call04_MA;
set top20_04_call1;
if TICKER="MSFT";
RUN;



%let event_date=2005-10-18;
%let event_date=%sysfunc(inputn(&event_date,yymmdd10.));
data t1 t2;
set MSFT_call04_MA;
if date>&event_date then output t2;
else output t1;
run;

proc sort data=t1;
by descending date;
run;
data t1;
set t1;
if _n_<=82;
run;
data t2;
set t2;
if _n_<=10;
run;
data result;
set t1 t2;
run;
proc sort data=result;
by date;
run;
data result(drop=sum);
set result;
retain sum mean;
if _n_=1 then sum=0;
sum+log(volume);
if _n_=61 then mean=sum/61;
if _n_>61 then do;
abVolume=log(volume)-mean;
output;
end;
run;
proc sort data=result;
by descending date;
run;
data MSFT_call_MA0426;
set result;
retain sum;
if _n_=12 then sum=abvolume;
if _n_>12 then do;
sum=sum+abvolume;
output;
end;
run;

[/code:1gfs0pw5]


其次你你要的结果可以用proc tabulate +proc format实现你最后要求的结果.还有整个内容你可以写成宏来实现(每家公司,每个event_date做在成表,然后自动调用,或者用宏参数传入).
个人观点,仅共参考.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
12#
 楼主| 发表于 2008-3-16 16:10:21 | 只看该作者

Re: 望高手指教

我又再次用了下面这段程序计算,
data MSFT_call04_MA;
format date yymmdd10.;
do date='07jan2004'd to '31dec2005'd;
VOLUME=CEIL(RANUNI(0)*10000);
output;
end;
run;
运行后出来的天数会变比如说原来是206个运行后会变成6百多个,而且volume 的值也都会发生变化这样算出来的abnormal还会使正确的吗?请指教谢谢啦1
原始数据MSFT_call04_MA如下
TICKER        DATE(总共有206天)        Volume
AWE        20040102        52.48076923
AWE        20040105        148.4807692
AWE        20040106        150.0576923
AWE        20040107        785
AWE        20040108        181.8653846
AWE        20040109        181.5769231
AWE        20040112        81.44230769
AWE        20040113        739.25
AWE        20040114        2608.019231
AWE        20040115        2011.615385
AWE        20040116        1599.634615
AWE        20040120        1578.823529
AWE        20040121        2035.45098
AWE        20040122        1909.941176
AWE        20040123        2272.529412
AWE        20040126        762.1176471
AWE        20040127        1848.509804
AWE        20040128        2119.245283
AWE        20040129        2239.396226
AWE        20040130        766.2608696
AWE        20040202        646.173913
AWE        20040203        1308.768116
AWE        20040204        1033.246377
AWE        20040205        812.5507246
AWE        20040206        1557.565217
AWE        20040209        741.7971014
AWE        20040210        731.2318841
AWE        20040211        895.7246377
AWE        20040212        5601.536232
AWE        20040213        1613.130435
AWE        20040217        4673.782609
AWE        20040218        2298.217391
AWE        20040219        1416.971014
AWE        20040220        1143.333333
AWE        20040223        1090.811594
AWE        20040224        806.2173913
AWE        20040225        870.9565217
AWE        20040226        538.7246377
AWE        20040227        389.6666667
AWE        20040301        920.0294118
AWE        20040302        358.1176471
AWE        20040303        376.5735294
AWE        20040304        501.9264706
AWE        20040305        432.8382353
AWE        20040308        1045.986486
AWE        20040309        623.0405405
AWE        20040310        188.9459459
AWE        20040311        233.4189189
AWE        20040312        206.2837838
AWE        20040315        77.22972973
AWE        20040316        173.5135135
AWE        20040317        430.8648649
AWE        20040318        298.0675676
AWE        20040319        82.78378378
AWE        20040322        39
AWE        20040323        232.6388889
AWE        20040324        168.0694444
AWE        20040325        272.8333333
AWE        20040326        88.42424242
AWE        20040329        29.29166667
AWE        20040330        290.8194444
AWE        20040331        116.1666667
AWE        20040401        111.8472222
AWE        20040402        159.3055556
AWE        20040405        287.9428571
AWE        20040406        204.0571429
AWE        20040407        61.51428571
AWE        20040408        71.2
AWE        20040412        31.35714286
AWE        20040413        316.3428571
AWE        20040414        115.0571429
AWE        20040415        644.2857143
AWE        20040416        140.6760563
AWE        20040419        138.057971
AWE        20040420        254.7536232
AWE        20040421        248.2028986
AWE        20040422        197.173913
AWE        20040423        529.6714286
AWE        20040426        91.97142857
AWE        20040427        57.42857143
AWE        20040428        292.7714286
AWE        20040429        16.95714286
AWE        20040430        25.08571429
AWE        20040503        26.72857143
AWE        20040504        301.9571429
AWE        20040505        266.0714286
AWE        20040506        115.9714286
AWE        20040507        37.2
AWE        20040510        40.61428571
AWE        20040511        66.67142857
AWE        20040512        18.95714286
AWE        20040513        47.68571429
AWE        20040514        24.44285714
AWE        20040517        423.8428571
AWE        20040518        855.6142857
AWE        20040519        388.0571429
AWE        20040520        113.0571429
AWE        20040521        1183.057143
AWE        20040524        364.3442623
AWE        20040525        127.1311475
AWE        20040526        86.8852459
AWE        20040527        385.0983607
AWE        20040528        85.36065574
AWE        20040601        74.95454545
AWE        20040602        144.3484848
AWE        20040603        45.28787879
AWE        20040604        348.0606061
AWE        20040607        6.333333333
AWE        20040608        198.6212121
AWE        20040609        207.2727273
AWE        20040610        71.36363636
AWE        20040614        43.21212121
AWE        20040615        73.90909091
AWE        20040616        61.01515152
AWE        20040617        31.66666667
AWE        20040618        25.57575758
AWE        20040621        99.16666667
AWE        20040622        11.40909091
AWE        20040623        8.909090909
AWE        20040624        16.84848485
AWE        20040625        22.09090909
AWE        20040628        40.34848485
AWE        20040629        31.68181818
AWE        20040630        648.030303
AWE        20040701        27.6969697
AWE        20040702        211.2878788
AWE        20040706        22.31818182
AWE        20040707        93.96969697
AWE        20040708        65.25757576
AWE        20040709        10.84848485
AWE        20040712        21.5
AWE        20040713        109.2272727
AWE        20040714        206.4545455
AWE        20040715        248.2121212
AWE        20040716        63.57575758
AWE        20040719        85
AWE        20040720        126.4769231
AWE        20040721        55
AWE        20040722        241.7230769
AWE        20040723        42.78461538
AWE        20040726        22.44615385
AWE        20040727        40.98461538
AWE        20040728        16.35384615
AWE        20040729        12.03076923
AWE        20040730        4.215384615
AWE        20040802        17.26153846
AWE        20040803        3.969230769
AWE        20040804        23.36923077
AWE        20040805        40.92307692
AWE        20040806        58.2
AWE        20040809        85.6969697
AWE        20040810        100.4393939
AWE        20040811        12.36363636
AWE        20040812        16.92424242
AWE        20040813        165.5606061
AWE        20040816        124.6212121
AWE        20040817        96.86363636
AWE        20040818        77
AWE        20040819        5.803030303
AWE        20040820        14.21212121
AWE        20040823        37.82089552
AWE        20040824        16.01492537
AWE        20040825        30.49253731
AWE        20040826        10.92537313
AWE        20040827        11.68656716
AWE        20040830        12.47761194
AWE        20040831        132.6716418
AWE        20040901        43.85074627
AWE        20040902        24.53731343
AWE        20040903        42.07462687
AWE        20040907        67.43283582
AWE        20040908        117.4328358
AWE        20040909        17.91044776
AWE        20040910        19.29850746
AWE        20040913        6.955223881
AWE        20040914        8.298507463
AWE        20040915        38.26865672
AWE        20040916        9.134328358
AWE        20040917        27.11940299
AWE        20040920        11.70769231
AWE        20040921        85.75384615
AWE        20040922        85.50769231
AWE        20040923        171.5230769
AWE        20040924        165.8461538
AWE        20040927        58.06153846
AWE        20040928        126.4
AWE        20040929        14.61538462
AWE        20040930        156.5692308
AWE        20041001        61.16923077
AWE        20041004        42
AWE        20041005        38.21538462
AWE        20041006        72.30769231
AWE        20041007        43.16923077
AWE        20041008        23.23076923
AWE        20041011        11.29230769
AWE        20041012        51.01538462
AWE        20041013        11.6
AWE        20041014        329.6461538
AWE        20041015        36.6
AWE        20041018        17.62068966
AWE        20041019        51.74137931
AWE        20041020        1.568965517
AWE        20041021        43.84482759
AWE        20041022        104.637931
AWE        20041025        65.13793103
AWE        20041026        1832.810345
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
13#
 楼主| 发表于 2008-3-16 16:20:00 | 只看该作者

Re: 望高手指教

感谢byes的热心帮助。
在删除了format date 的那段代码后运行SAS的LOG
161 %let event_date=2004-10-18;
162  %let event_date=%sysfunc(inputn(&event_date,yymmdd10.));
163  data t1 t2;
164  set MSFT_call04_MA;
165  if date>&event_date then output t2;
166  else output t1;
167  run;

NOTE: There were 252 observations read from the data set WORK.MSFT_CALL04_MA.
NOTE: The data set WORK.T1 has 0 observations and 3 variables.
NOTE: The data set WORK.T2 has 252 observations and 3 variables.
好像不format date 的话,t1 t2就挑不出来。
不好意思又要麻烦各位了,谢谢。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
14#
 楼主| 发表于 2008-3-16 20:29:45 | 只看该作者

Re: 望高手指教

[quote="janezhang":15nzu26p]我又再次用了下面这段程序计算,
data MSFT_call04_MA;
format date yymmdd10.;
do date='07jan2004'd to '31dec2005'd;
VOLUME=CEIL(RANUNI(0)*10000);
output;
end;
run;[/quote:15nzu26p]
这段程序没用的,你有自己的数据,因为我没有你的数据,所以我模拟的数据,我服了你了.
你自己表格里面有date ,volume为什么还要生成date,volume(上面那段程序).
希望bbs的高手给他点建议把.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
15#
 楼主| 发表于 2008-3-17 17:11:36 | 只看该作者

Re: 望高手指教

真的为本人的粗心大意和知识浅薄而感到不好意思。

又重新挑过了程序,计算的问题终于解决了。

说了很多次谢谢,但是每一次都是很发自内心的,真的谢谢大家的帮助,尤其是感谢BYES,非常感谢你, 尽管有时候我问的问题很不清楚,有时候又很白痴,你每一次都耐心的给出了答复,谢谢啦。
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-3-3 16:42 , Processed in 0.068021 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表