楼主: econfj
3040 15

[有偿编程] 帮朋友求助一个sas的问题 [推广有奖]

11
davil2000 发表于 2012-9-3 13:52:47

data data1;
input Share #2 Turnover #3 @2 Date yyq6. #4;
format Date yyq6.;
datalines;
1
54
2000Q1

1
34
2000Q1

1
64
2000Q1

1
12
2000Q1

1
34
2000Q2

1
22
2000Q2

1
11
2000Q2

1
55
2000Q2

2
31
2000Q1

2
42
2000Q1

2
52
2000Q1

2
53
2000Q1

2
86
2000Q2

2
42
2000Q2

2
32
2000Q2

2
12
2000Q2

;

proc sort;        by Share Date;
run;

proc means data = data1;
class share date;
output         out=stat1
                                mean=avg_turnover                std=std_turnover
                          max=max_turnover                 min=min_turnover;
var turnover;
run;

data         total_mean goup_mean;
        set stat1;
        if         _type_=0
                        then output total_mean;
                        else output goup_mean;
run;
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
数据分析师3K + 60 + 80 + 3 + 3 + 3 精彩帖子

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

R是万能的,SAS是不可战胜的!

12
haku_x300 发表于 2012-9-3 14:04:18
davil2000 发表于 2012-9-3 13:52
data data1;
input Share #2 Turnover #3 @2 Date yyq6. #4;
format Date yyq6.;
PROC IMPORT OUT= turnover DATAFILE= "D:\stock.xls"
            REPLACE;
     SHEET="sheet1";
     GETNAMES=YES;
RUN;

proc means mean data = turnover maxdec = 9;
class date share;
variable turnover;
output out = turnover1 mean=turnover;
run;
data turnover2;
   set turnover1(where=(date ne '' and share ne .) keep=date share turnover);
run;
proc means mean data=turnover2;
class date;
variable turnover;
output out=turnover3 mean=trunover;
run;
SAS9.1.3下得到如下结果:
The SAS System        12:23 Friday, September 3, 2012

                                        The MEANS Procedure

                               Analysis Variable : turnover Turnover

                                                  N
                                Date            Obs            Mean
                                -----------------------------------
                                2000Q1            2      42.7500000

                                2000Q2            2      36.7500000
                                -----------------------------------

输入是用XLS文件,sheet名暂定"sheet1".

13
haku_x300 发表于 2012-9-3 14:04:54
econfj 发表于 2012-9-3 13:15
非常感谢haku_x300,

您现在是手动输入数据,如果是直接调用一个xls数据文件,毕竟他有1000个股票,程序 ...
PROC IMPORT OUT= turnover DATAFILE= "D:\stock.xls"
            REPLACE;
     SHEET="sheet1";
     GETNAMES=YES;
RUN;

proc means mean data = turnover maxdec = 9;
class date share;
variable turnover;
output out = turnover1 mean=turnover;
run;
data turnover2;
   set turnover1(where=(date ne '' and share ne .) keep=date share turnover);
run;
proc means mean data=turnover2;
class date;
variable turnover;
output out=turnover3 mean=trunover;
run;
SAS9.1.3下得到如下结果:
The SAS System        12:23 Friday, September 3, 2012

                                        The MEANS Procedure

                               Analysis Variable : turnover Turnover

                                                  N
                                Date            Obs            Mean
                                -----------------------------------
                                2000Q1            2      42.7500000

                                2000Q2            2      36.7500000
                                -----------------------------------

输入是用XLS文件,sheet名暂定"sheet1".

14
davil2000 发表于 2012-9-3 14:37:28
data1.xls (13.5 KB)
proc import datafile="d:\data1.xls"
     out=data1 replace;
/*     sheet='sheet1';*/
     getnames=yes;
run;

proc sort;        by Share Date;
run;

proc means data = data1;
class share date;
output         out=stat1
                                mean=avg_turnover                std=std_turnover
                          max=max_turnover                 min=min_turnover;
var turnover;
run;

data         total_mean goup_mean;
        set stat1;
        if         _type_=0
                        then output total_mean;
                        else output goup_mean;
run;
R是万能的,SAS是不可战胜的!

15
webgu 发表于 2012-9-3 16:28:05
  1. proc import out=turnover
  2.                   datafile="d:\stock.xls"
  3.                                   dbms=xls
  4.                                   replace;
  5.                                   getnames=yes;
  6. run;
  7. proc sql;
  8.   create table average1 as
  9.   select  share , date,avg(turnover) as turnover_avg1
  10.   from turnover
  11.   group by share , date;
  12. quit;



  13. proc sql;
  14.   create table average2 as
  15.   select date, avg(turnover_avg1) as avg2
  16.   from average1
  17.   group by  date;
  18. quit;
复制代码
log:19   proc import out=turnover
20                     datafile="d:\stock.xls"
21                     dbms=xls
22                     replace;
23                     getnames=yes;
24   run;

NOTE: The import data set has 16 observations and 3 variables.
NOTE: WORK.TURNOVER data set was successfully created.
NOTE: PROCEDURE IMPORT used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


25   proc sql;
26     create table average1 as
27     select  share , date,avg(turnover) as turnover_avg1
28     from turnover
29     group by share , date;
NOTE: Table WORK.AVERAGE1 created, with 4 rows and 3 columns.

30   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


31
32
33
34   proc sql;
35     create table average2 as
36     select date, avg(turnover_avg1) as avg2
37     from average1
38     group by  date;
NOTE: Table WORK.AVERAGE2 created, with 2 rows and 2 columns.

39   quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

16
davil2000 发表于 2012-9-3 21:40:21
Can I seek your help on SAS PROC MEAN?

LZ看清了,主贴是要求用MEANS过程解决的~哈
R是万能的,SAS是不可战胜的!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 19:14