Anda di halaman 1dari 275

SAS


1.
2.
3.
4.
5.
6.
7.
8.

SAS
SAS
SAS
SAS

SAS
SAS
SAS
2

SAS

1. ( SAS
2.
3. SAS AWS(SAS )
4.
( SAS )

SAS

SAS

SAS
SAS AWS--
PGM
SAS
; SAS ,
SAS ; SAS
.

LOG

, SAS

, .

OUTPUT ,

; ;
.

V9
SAS


F5)

F3
F4

(F6)

(F7) SAS9.0+

Output Delivery System ODS


Html

Ctrl+Tab
6

SAS

(Explorer)
SAS
SAS
(
)
SAS

(Result)

SAS
.

,
.

.
(Tools) (Options)
(Preferences) ( View) (
)
7

( )

WPGM

F5

WEDIT

PGM

(LOG)

LOG

OUTPUT

ODSRESULTS

SAS

EXPLORER

F6
F7

HELP

F1

KEYS

F9

OPTIONNS

SUBMIT

RECALL

F3
F4

SAS SAS Catalog


SAS SAS
SAS SAS
Library sashelp,sa
suser,work
SAS
libname.SAS-filename .

sashelp.class sashelp class

11

SAS
SAS :
D:\program\ch02_01.sas
(1)
(File)=> (Open)
,
, .
(2) :
include d:\program\ch02_01.sas

12

SAS
ch02_01.sas

title 'sas0101.sas';
title

data

means

sort

ttest

data class;
input name $ sex $ age height weight;
cards;
Mary
F
15
66.5
112.0

Thomas
M
11
57.5
85.0
;
proc means data=class mean max min;
var age height weight;
run;
proc sort data=class;
by sex;
run;
proc ttest data=class;
class sex;
var weight;
run;

15

SAS
19

SAS
SAS DATA
PROC
means proc means
proc summary

16

SAS -

(Help) SAS (SAS System Help and


Documentation) -- SAS .
, ,
. ,
.
, SAS
.

18


PGM WPGM
ch02_01.SAS, log ;
Help( ) Means proc
means

22

SAS
SAS SAS
Directory-based System
Windows :
UNIX :

z/OS (OS/390)
z/OS (OS/390) :

SAS

d:\sas
/users/userid

SAS

userid.workshop.sasdata

25

SAS
SAS
SAS

26

ibref SAS

Libref

27

SAS
SAS SAS

Work

Work
Sasuser
Sasuser

saslib

saslib
28


LIBNAME SAS
libref
LIBNAME :
LIBNAME
LIBNAME libref
libref 'SAS-data-library'
'SAS-data-library' <options>;
<options>;
libname saslib d:\sas';
:
8

29

SAS
libref libref Work

NewSalesEmps

work.NewSalesEmps

data NewSalesEmps;
length First_Name $ 12
Last_Name $ 18 Job_Title $ 25;
infile 'newemps.csv' dlm=',';
input First_Name $ Last_Name $
Job_Title $ Salary;
run;
proc print data=work.NewSalesEmps;
run;
32

SAS

SAS

SAS
:
SAS

SAS

33

SAS
_ALL_ CONTENTS
SAS

PROC
PROC CONTENTS
CONTENTS DATA=libref._ALL_
DATA=libref._ALL_ NODS;
NODS;
RUN;
RUN;
NODS
NODS _ALL_
SAS

34

SAS -- Viewtable
)

ViewTable .

ViewTable (VT VT )
(1) SAS SAS
(V8)
(2) VT
VT SASUSER.CLASS
(3) SAS => => VT
=> .

39

S :
SAS

( )
VAR1 VAR2
123 aBc
1
456 XyZ
2
12.34 123
3
0.1234 Lm3n
4

...

VARn
12Mar90
01Jul97
31Dec56
01jan80

49

Work.Class
Data Set Name
Engine
Created
Observations
Variables
...
Age
Height
N 8
N 8
14
69.0
13
56.5
13
65.3
14
62.8

WORK.CLASS
V9
Fri, Feb 08, 2008 01:40 PM
19
5
Name
$ 8
Alfred
Alice
Barbara
Carol

Sex
$ 1
M
F
F
F

Weight
N 8
112.5
84.0
98.0
102.5

50


SAS
SAS
( )

Work.Class
Data Set Name
WORK.CLASS
Engine
V9
Created
Fri, Feb 08, 2008 01:40 PM
Observations
19
Variables
5
...
Age
Height
Name
Sex
Weight
N 8
N 8
$ 8
$ 1
N 8

51


CONTENTS SAS
CONTENTS
PROC
PROCCONTENTS
CONTENTS DATA=SAS-data-set;
DATA=SAS-data-set;
RUN;
RUN;

proc contents data=work.class;


run;

52


PROC CONTENTS

53


SAS /

Work.Class
Age
N 8
14
13
13
14

Height
N 8
69.0
56.5
65.3
62.8

Name
$ 8
Alfred
Alice
Barbara
Carol

Sex
$ 1
M
F
F
F

Weight
N 8
112.5
84.0
98.0
102.5

54

SAS

1 32,767

8
8 16 17
8

55

AS

SAS
01JAN1959

01JAN1960

01JAN1961

-365

366

01/01/1959

01/01/1960

01/01/1961

SAS 1960 1 1


SAS

First_Name
Satyakam
Monica
Kevin
Petrea

Last_Name

Job_Title

Denny
Sales Rep. II
Kletschkus Sales Rep. IV
Lyon
Sales Rep. I
Soltau

Salary
26780
.
26955
27440

59

SAS

SAS
1 32

60

SAS

SAS

SAS

SAS

61


PRINT SAS
PROC PRINT

Obs

62


PRINT
PROC
PROCPRINT
PRINT DATA=SAS-data-set;
DATA=SAS-data-set;
RUN;
RUN;

proc print data=work.Class;


run;

63


PROC PRINT

64


PRINT
PROC
PROC PRINT
PRINTDATA=SAS-data-set
DATA=SAS-data-set NOOBS;
NOOBS;
VAR
VARvariable(s);
variable(s);
RUN;
RUN;
NOOBS
VAR

65


proc print data=work.class noobs;
var Name Height Weight;
run;
PROC PRINT

66


1. ( saslib);
sas ;
2. class SEX=F AGE>=14 ,
; where
3. class ;
4. SAS SASHELP , AIR
.

67

AS

SAS

data work.NewSalesEmps;
length First_Name $ 12
Last_Name $ 18 Job_Title $ 25;
infile 'newemps.csv' dlm=',';
input First_Name $ Last_Name $
Job_Title $ Salary;
run;

DATA

proc print data=work.NewSalesEmps;


run;

PROC

proc means data=work.NewSalesEmps;


class Job_Title;
var Salary;
run;

PROC

SAS
68

AS
SAS :
SAS
data work.NewSalesEmps;
length First_Name $ 12
Last_Name $ 18 Job_Title $ 25;
infile 'newemps.csv' dlm=',';
input First_Name $ Last_Name $
Job_Title $ Salary;
run;
proc print data=work.NewSalesEmps;
run;
proc means data=work.NewSalesEmps;
class Job_Title;
var Salary;
run;
69

SAS
SAS

data work.NewSalesEmps;
length First_Name $ 12
Last_Name $ 18 Job_Title $ 25;
infile 'newemps.csv' dlm=',';
input First_Name $ Last_Name $
Job_Title $ Salary;
run;
proc print data=work.NewSalesEmps;
run;
proc means data=work.NewSalesEmps;
class Job_Title;
var Salary;
run;
70

AS

SAS

data work.NewSalesEmps;
length First_Name $ 12
Last_Name $ 18 Job_Title $ 25;
infile 'newemps.csv' dlm=',';
input First_Name $ Last_Name $
Job_Title $ Salary;
run;
proc print data=work.NewSalesEmps; run;
proc means data =work.NewSalesEmps;
class Job_Title; var Salary;run;
71

AS

SAS

data work.NewSalesEmps;
length First_Name $ 12
Last_Name $ 18 Job_Title $ 25;
infile 'newemps.csv' dlm=',';
input First_Name $ Last_Name $
Job_Title $ Salary;
run;
proc print data=work.NewSalesEmps; run;
proc means data =work.NewSalesEmps;
class Job_Title; var Salary;run;

72

AS

SAS

data work.NewSalesEmps;
length First_Name $ 12
Last_Name $ 18 Job_Title $ 25;
infile 'newemps.csv' dlm=',';
input First_Name $ Last_Name $
Job_Title $ Salary;
run;
proc print data=work.NewSalesEmps; run;
proc means data =work.NewSalesEmps;
class Job_Title; var Salary;run;
73

AS

SAS

data work.NewSalesEmps;
length First_Name $ 12
Last_Name $ 18 Job_Title $ 25;
infile 'newemps.csv' dlm=',';
input First_Name $ Last_Name $
Job_Title $ Salary;
run;
proc print data=work.NewSalesEmps; run;
proc means data =work.NewSalesEmps;
class Job_Title; var Salary;run;

74

SAS

SAS

data work.NewSalesEmps;

length First_Name $ 12
Last_Name $ 18 Job_Title $ 25;
infile 'newemps.csv' dlm=',';
input First_Name $ Last_Name $
Job_Title $ Salary;
run;
proc print data=work.NewSalesEmps; run;
proc means data =work.NewSalesEmps;
class Job_Title; var Salary;run;
75

AS
SAS SAS SAS
SAS

/*/* comment
comment */*/

** comment
comment ;;

76

AS

*----------------------------------------*
|
This program creates and uses the
|
|
data set called work.NewSalesEmps.
|
*----------------------------------------*;
data work.NewSalesEmps;
length First_Name $ 12 Last_Name $ 18
Job_Title $ 25;
infile 'newemps.csv' dlm=',';
input First_Name $ Last_Name $
Job_Title $ Salary /*numeric*/;
run;
/*
proc print data=work.NewSalesEmps;
run;
*/
proc means data=work.NewSalesEmps;
*class Job_Title;
var Salary;
run;

77


SAS

SAS SAS

ERROR 22-322: Syntax error, expecting one of the following:


a name, a quoted string, (, /, ;, _DATA_, _LAST_,
_NULL_.

78

daat work.NewSalesEmps;
length First_Name $ 12
Last_Name $ 18 Job_Title $ 25;
infile 'newemps.csv' dlm=',';
input First_Name $ Last_Name $
Job_Title $ Salary;
run;
proc print data=work.NewSalesEmps
run;
proc means data=work.NewSalesEmps average max;
class Job_Title;
var Salary;
run;
79

SAS

1. ViewTable ;
2. Import ;
3. .

81

SAS

SAS

VIEWTABLE
DATA
Import
SAS/ACCESS
82

SAS - /

1223412
12,234.1234
$12,234.123
4

12234.12
12,234.12
$12,234.12

7.2 8.2

7.2
comma9.2
dollar10.2

8.2
comma9.2
dollar10.2

12234.12

( ch02_02.SAS)
83

SAS

20OCT97
20/10/97
1997/10/20

20OCT1997
102097
97-10-20

DATE7.
DDMMYY8.
yymmdd10.

date9.
mmddyy6.
yymmdd8.

1960,1,10
1960,1,21
1960,2,131
1961,1,1366

13807

( ch02_03.SAS)
84

ORMAT
FORMAT
FORMAT
FORMAT
FORMATvariable(s)
variable(s) format;
format;
SAS SAS

DATA FORMAT
SAS

85

SAS
<$>format<w>.<d>
<$>format<w>.<d>
$
format

SAS

86

S -

$w.

w.d

COMMAw.d

COMMAXw.d

DOLLARw.d

EUROXw.d

()

87

S -

$4.

Programming

Prog

12.

27134.2864

27134

12.2

27134.2864

27134.29

COMMA12.2

27134.2864

27,134.29

COMMAX12.2

27134.2864

27.134,29

DOLLAR12.2

27134.2864

$27,134.29

EUROX12.2

27134.2864

27.134,29

88

DOLLAR12.2

27134.2864

$27,134.29

DOLLAR9.2

27134.2864

$27134.29

DOLLAR8.2

27134.2864

27134.29

DOLLAR5.2

27134.2864

27134

DOLLAR4.2

27134.2864

27E3

89

S
SAS SAS

MMDDYY6.

010160

MMDDYY8.

01/01/60

MMDDYY10.

01/01/1960

DDMMYY6.

365

311260

DDMMYY8.

365

31/12/60

DDMMYY10.

365

31/12/1960

90

S -

DATE7.

-1

31DEC59

DATE9.

-1

31DEC1959

WORDDATE.

January 1, 1960

WEEKDATE.

Friday, January 1, 1960

MONYY7.

JAN1960

YEAR4.

1960

91


FORMAT
a. format Birth_Date Hire_Date ddmmyy9.
Term_Date mmyy7.;
b. format Birth_Date Hire_Date ddmmyyyy.
Term_Date mmmyyyy.;
c.

format Birth_Date Hire_Date ddmmyy10.


Term_Date monyy7.;

Birth_Date

Hire_Date

Term_Date

21/05/1969

15/10/1992

MAR2007

92

SAS
Viewtable

VT VT New=

94

SAS
Viewtable

ViewTable
Column Attributes D
ata Column Attributes
;
File Like
;
File Include

.
95

SAS
Viewtable

( SAS
) .
:
(File) (Save as)
( File) (Save)
SAS .

96

SAS -
DATA
:

DATA SAS-data-set ;
;
INPUT ;
;
CARDS;
;
RUN;

DATA :

data da1;
input x y z;
sum=x+y+z;
cards;
1 3.1 5
3 2.3 7
6 3.4 6
;
run;
( ch02_05.SAS)

97

SAS
DATA
SAS

:
DATA
SAS-data-set ;
;
INFILE filename
<FIRSTOBS=n1
OBS=n2>;
INPUT ;
;
RUN;
( ch02_06.SAS)

DATA
SAS :
data da2;
infile c:\f1.txt;
input x y z;
mean=(x+y+z)/3;
run;
f1.txt :

3.1 5
3 2.3 7
.

( infile ,
DLM=, )

98

SAS - Import
SAS Import/Export :
(Import): SAS ;
(Export): SAS .
Windows dbf xls, w
k1, wk3 .
(File) (Import) (Export)
SAS ( SAS
).
EFI (External Fil
e Interface ), .
99

SAS - Import

SAS
,

.
Options

100

SAS - Import
SAS

SAS

101

SAS - Import
Import SAS
(1) (File) (Import data... )
12 .
*.* *.txt *.csv Next ;
(2) Browse sa
s ( D:\TEMP\ff1)
(3) sas (work)
( sasff1).
(4) Finish , SAS .
ff1,ff2,ff3, ff4)

102

SAS - Import
Import Excel SAS
(1) (File) (Import data)
12 .
Microsoft Excel 97 or 2000(*.xls) Next ;
(2) Browse s
as ( \dataset\fitness.xls)
(3) sas (work)
( sas.xls).
(4) Finish , Excel SAS .

103

1. VT ViewTable ,
sas ;
2. Import , *.txt sas ;
3. sas .
name

No Score

001

88

002

80

003

75

92

004

104

SAS

Windows SAS

SAS

. SAS
.
SAS ,
.
: BASIC , C ,Fortran
.
: , ,
( Fortran ), .
105

SAS
SAS SAS .
SAS SAS SAS

SAS SAS .
SAS .
DATA PROC INPUT .
SAS SAS ,
SAS
.

106

SAS
SAS SAS

Program Steps
data procedure p
roc run d
ata proc

name age A,B,C

SAS 32
( ),
( ), ( ), ( ), ( ) ( ).
SAS

107

SAS
SAS :
;
;

SAS .
"Beijing"
"BEIJING" .
.

108

SAS
SAS SAS . SAS
DATA PROC .
SAS .

DATA SAS PROC SAS


.
SAS DATA PROC
DATA PROC DATA
PROC .

109


SAS

DATA
SAS

SAS

PROC

(
)
110

SAS -

DATA , RUN ,

SAS SAS :
-- SAS SAS
,
DATA INPUT CARDS INFILE SET MERGE
;
--
where in ;
,
DO IF GOTO SELECT LINK ;

,
ARRAY INFORMAT FORMAT LENGTH ATTRIB
KEEP DROP .
111

SAS -

PROC SAS

PROC SAS
SAS .PROC
PROC PROC
.
PROC
.
PROC .

112

SAS -
SAS .SAS
PGM .
SAS .
LOG

; .
SAS OUTPUT .

113

AS -SAS

.
( )
( ).
,
.

114

AS -SAS
SAS

12 7.5 2.5E 10
'Beijing' "Li Ming" " "
'13JUL1998'd
'14:20t
13JUL1998:14:20:32dt
SAS

SAS .
(ch02_07.sas)

115

AS -SAS
SAS

SAS

8
SAS 8
INPUT
LENGTH
LENGTH name $ 20

116

AS -SAS

SAS

, ,*,/,**

><> < IN
EQ
NE
GT
LT GE LE
EqualNot Equal Greater Than Less Than
Greater than or Equal Less than or Equal
IN SAS

prov in ( , , , ')
prov
117

AS -

&(AND)
|(OR)
^(NOT)
AND & OR |
NOT ^
(salary >= 1000) AND (salary < 2000)
1000 2000 2000
(age <= 3) OR (sex = )

NOT ((salary >= 1000) AND (salary < 2000))


1000 2000

118

AS -SAS
||
| <> 3<>5
5 ><
3><5 3
( ) ( )

,
( ); ( ).

119

AS -SAS
SAS 9.x ,SAS ,

Zip ( )

SAS SAS
. SAS , SAS
.
,
,

120

-SAS

121

-SAS

122

data _null_;
y=sqrt(3);
put y= y;
run;
LOG SQRT 3
y=1.7320508076

123

SAS

= CDF( , x <, >)


= PDF( , x <, >)
= PMF( , x <, >)
= LOGPDF( , x <, >)
= LOGPMF( , x <, >)

124


CDF PDF
PMF LOGPDF PDF
LOGPMF PMF . x
<, >
BERNOULLI,BETA, BINOMIAL,
CAUCHY,CHISQUARED, GAMMA F, EXPONENTIAL, GAMMA,
GEOMETRIC,HYPERGEOMETRIC,LAPLACE,LOGISTIC,LOGNO
RMAL,POISSON, NEGBINOMIAL,NORMAL GAUSSIAN,PAR
ETO,T, UNIFORM, WALD IGAUSS, and WEIBULL

125


PDF('NORMAL', 1.96)
1.96 0.05844
CDF('NORMAL' 1.96)
1.96 0.975
PMF('NORMAL' 1.96)=PDF('NORMAL' 1.96)
PMF PDF
SAS
(ch02_08.sas)

126


PROBNORM(x) .
U x (P{U
=x}).
PROBCHI(x,df,nc) df, nc
. nc 0,
. df . :
p=1-probchi(31.264,11); 1-0.999=0.001.
PROBGAM(x,a) a(a 0)
. : p=probgam(7.5,5.2)
0.84885.

127


PROBBETA(x,a,b) ( :
, ). :
p=probbeta(0.75,4,2.5) 0.7467.
PROBF(x,ndf,ddf,nc) F ( ndf
,ddf ,nc ).
F , nc=0 .
. :p=1 probf(3.32,2,30) 0.04983.
PROBBNML(p,n,m)( :0p1,n1,0mn)
.
PROBT(x,df,nc) t ( df ,
nc ). nc 0,
t . df .

128


POISSON(lambda,n)( lambda n
.
PROBNEGB(p,n,m)( 0p1,n 0,m0)
.
PROBHYPR(nn,k,n,x,r)( nn1,0knn, 0nnn,ma
x (0,k+n nn)xmin(k,n) )
. nn K n
x r
1 r

PROBBNRM(x,y,r) r
(ch02_09.sas)

129


X F(x), p (0p
1), xp F(xp)=p, xp X (
F(x) p ).SAS
.
CINV(p,df,nc)( 0p1, df 0, n
c0) . :
data;
q1=cinv(0.95,3);put q1=q1;
q2=cinv(0.95,3.5,4.5);put q2=;
run;
q1=7.8147,q2=17.505 ( LOG ).

130


BETAINV(p,a,b)( :0p1,a 0,b 0)
. :
x=betainv(0.001,2,4) 0.0101.
FINV(p,ndf,ddf,nc)( 0p1, ndf 0,
ddf 0, nc0) F
. DATA q1=4.1028,q2=7.583
8.
data _null_
q1=finv(0.95,2,10);put q1=
q2=finv(0.95,2,10,3.2);put q2=
run

131


TINV(p,df,nc)( 0p1, df 0 ) t
. nc nc=0, t
. nc , .
.
PROBIT(p)(0p1) .
PROBNORM . X N(0,1),
P{Xprobit(z)}=z
5 5 .
GAMINV(p,a)( :0p1,a 0)
. : x=gaminv(0.75,3.5); 4.51857.

132


:x1,x2,,xn( X1 Xn X
Y ).SAS ( 15 ),
.
. :
MEAN(of x1-xn MEAN(x,y,z,).
x=mean(2,,,6) 4.
x=mean(1,2,3,2) 2.
MAX(of x1-xn) MAX(x,y,)
MIN(of x1-xn) MIN(x,y,)

133



N(of x1-xn) N(x,y,)

NMISS(of x1-xn) NMISS(x1,x2,).
SUM(of x1-xn) SUM(x1,x2,).
VAR(of x1-xn) VAR(x1,x2,).
STD(of x1-xn) STD(x1,x2,).
x=std(2,6) x=std(2,,6) 2.828427.
x=std(2,4,6,3,1) 1.923538.

134


STDERR(of x1-xn) STDERR(x1,x2,).
: x=stderr(2,6,3,4)
x=stderr(2,6,3,4,) 0.8539126
CV(of x1-xn) CV(x1,x2,).
RANGE(of x1-xn) RANGE(x1,x2,).
( )
CSS(of x1-xn) CSS(x1,x2,).
.

135



USS(of x1-xn) USS(x1,x2,).
( ) .

SKEWNESS(of x1-xn) SKEWNESS(x1,x2,).
.

KURTOSIS(of x1-xn) KURTOSIS(x1,x2,).
4 .
ORDINAL(k,x1,x2,xn) x1, x2,xn
k .
(ch02_10.sas)
136


F(x),
1 2 F(x) .
.SAS 11
.
:
UNIFORM(seed) RANUNI(seed).

NORMAL(seed) RANNOR(seed).

. X=M+sqrt(SQ)rannor(seed)
Y=exp(M+sqrt(SQ)rannor(seed))=exp(X)
X M SQ Y
, exp(M+SQ/2), exp(2M+SQ)*(exp(SQ)
137
1).


RANEXP(seed).

RANGAM(seed,alpha) ( alpha 0).
:RANTRI(seed,h)( 0 h 1).
:RANCAU(seed).
:RANBIN(seed,n,p)(n 0 ,0
p 1).

RANPOI(seed,lambda)(lambda
0 ).
: RANTBL(seed,p1 pi
pn)
( )
138

:
CEIL(x)-- x .CEIL(4.5)=5.
FLOOR(x)-- x .Floor(4.5)=4.
INT(x)-- x . INT(4.5)=4.
ABS(x)-- x .
MOD(x,y)-- x y .
SQRT(x)-- x .
DIGAMMA(x)-- x GAMMA .
GAMMA(x)-- x GAMMA .

139


LOG(x)-- x e .
LOG2(x)-- x 2 .
LOG10(x)-- x 10 .
ERF(x)-- .
EXP(x)-- e x .EXP(x)=ex.
SIN(x),COS(x),TAN(x)-- x .
SINH(x),COSH(x),TANH(x)--
UPCASE(s)-- s
LOWCASE(s)-- s
SUBSTR(s,p,n)-- s p n

140


LAGn(x) x n AIR:
( ) .
date
air
DIFn(x) x
JAN49
112
n ( )
FEB49
118
.
MAR49

132

DEC49

118

JAN50

115

FEB50

126

MAR50

141

.
141

(1) ;
(2)
data lagdif;
set dst.air;
pct1=dif(air)/lag(air);
pct2=dif12(air)/lag12(air);
run;
Proc print data=Lagdif;
(ch02_11.sas)
id date;
var air pct1 pct2;
Run;
142

143

AS

ddMMMyy D( : 12JAN96d )

DATE() SAS ,
TODAY()-- SAS ,
DATETIME()-- SAS ,
TIME()-- SAS ,
HOUR(time | datetime) SAS
MINUTE(time | datetime)-- SAS ,
SECOND(time | datetime)-- SAS
144

AS
YEAR(date)-- SAS date ,
MONTH(date)-- SAS date ,
DAY(date)-- SAS date ,
WEEKDAY(date)-- SAS date ( ) QTR(dat
e)-- SAS date ,
MDY(month,day,year)-- year month day ,
HMS(hour,minute,second)-- hour, minute, second
,
DHMS(date,hour,minute,second)--
DATEPART (datetime)-- SAS datetime

(ch02_12.sas)
145

AS
INTNX(interval,from,n)-- from n S
AS interval YEAR QTR MONTH
WEEK DAY
INTNX('MONTH', '16Dec1997'd,3)
1998 3 1
INTCK(interval,from,to)-- from to
interval interval MONTH .
INTCK(YEAR, 31Dec1996d, 1Jan1998d)
1996 12 31 1998 1 1

2 1
146

x=-3,-2,-1, 0, 1,2,3 F(x)


(x) ;
~t(n), t tp(n), n=1,5,1
0,20; p=0.10,0.90, 0.95, 0.975;
date=14JUL2007d , ?
cpi cpi

147


SAS

SAS
Sybase Oracle
FoxPro Excel
SQL SQL

SAS

148


SAS SAS
SAS
SAS

X=. Y=. Z=.


X=10 Y=20 Z=30
X=. Y=. Z=.
X=100 Y=200
Z=300
X=. Y=. Z=.
NOTE: The data set
WORK.A has 2
observations and 3
variables.

data a
put x= y= z=
input x y
z=x+y
put x= y= z=
cards
10 20
100 200

run

149


LOG

X=. Y=. Z=.


X=10 Y=20 Z=30
X=. Y=. Z=.
X=100 Y=200 Z=300
X=. Y=. Z=.
NOTE: The data set WORK.A has 2
observations and 3 variables.
150

DATA
A WORK.A
PUT X Y Z ,
, LOG .
INPUT CARDS
X 10 Y 20
Z 30 LOG
10 20 30
CARDS
RUN
,
100 200
151


SAS
RUN
;
DATA
. ,
PUT
10 20 30
INPUT
X Y 100 200
Z 300
PUT X Y Z
100 200 300
152


CARDS


PUT
INPUT

WORK.A

PROC PRINT
RUN

OBS
1
2

X
10
100

Y
20
200

Z
30
300
153


SAS
SAS ,
INPUT SET MERGE UPDATE MODIFY
, ,
,
,
INPUT SET MERGE UPDATE MODIFY
,
DATA
,
,
_N_,
154

155

SAS
SAS ,
SAS ,
SAS .

SAS
SAS
.

156


SAS

Excel

157


SAS

Excel

libname
data
set
...
run;

;
;

libname
data
set
...
run;

;
;
;

data
infile
input
...
run;

;
;

158

LIBNAME
LIBNAME libref
libref 'SAS-data-library';
'SAS-data-library';
DATA
DATAoutput-SAS-data-set;
output-SAS-data-set;
SET
SETinput-SAS-data-set;
input-SAS-data-set;
WHERE
WHEREwhere-expression;
where-expression;
KEEP
KEEP variable-list;
variable-list;
LABEL
LABELvariable
variable== 'label'
'label'
variable
variable == 'label'
'label'
variable
variable == 'label';
'label';
FORMAT
FORMATvariable(s)
variable(s) format;
format;
RUN;
RUN;

159

SAS -- SAS

DATA
:
DATA SAS-data-set ;
;
INPUT ;
;
CARDS;
;
RUN;

DATA

data da1;
input x y z;
sum=x+y+z;
cards;
1 3.1 5
3 2.3 7
6 3.4 6
;
(ch02_14.sas)
run;
160

SAS -- SAS

CARDS
INPUT

INFILE

f1.txt C:\

161

TA
DATA S
AS
LIBNAME
LIBNAME libref
libref 'SAS-data-library';
'SAS-data-library';
DATA
DATAoutput-SAS-data-set;
output-SAS-data-set;
SET
SETinput-SAS-data-set;
input-SAS-data-set;
<additional
<additional SAS
SASstatements>
statements>
RUN;
RUN;
DATA

162

SAS -- SAS
DATA DATA
SAS SAS :
:
DATA SAS-data-set ;
data da2;
infile
;
c:\ch02_15.txt;
INFILE filename
input x y z;
<FIRSTOBS=n1
mean=(x+y+z)/3;
(ch02_15.sas)
run;
OBS=n2>;
INPUT ;
f1.txt :
3.1 5
;
3 2.3 7
RUN;
163
6 3.4 6

SAS -- SAS
INFILE
INFILE INPUT
CARDS
INFILE

INFILE filename <options> ;


Options( ):
(1) DLM=, delimiter=ab ;
(2) FIRSTOBS=n1 OBS=n2
n1 n2 . ,
.
(3) DATALINES .
DATALINES CARDS .
164

SAS --INFILE
: data tem;
infile datalines;
input date $1-7 dest $8-10 num 11-13;
datalines;
01MAR90LON198
02MAR90FRA207
03MAR90LON205
;
run;
proc print;
Run;
(ch02_16.sas)
165

SAS -- INPUT

INPUT :
INPUT < 1><. . . n > <@|@@>;

List: <$><: >


Colunm: <$> -
Formatted: [ :@n +n]
Named: = <$> -
@: Input
@@: .
.
167

SAS -- INPUT
1 INPUT - List ( )
INPUT <$><: >
<$><: >. . . ;
CARDS

(.)

168

SAS --
INPUT

List ( )
data: list

input name $ sex $ height weight


cards
176 65
181 78
162 54

(ch02_17.sas)

.
INPUT

NAME
SEX $

SAS DATA

169

SAS --
2INPUT
Column
INPUT

INPUT <$> -
<$> - . . .

CARDS

-
( <=200)
,

170

SAS --
Column
( )

INPUT
1data
col1

input name $1-6 sex $8-9


height 11-13 weight 15-16 ;
cards ;
176 65
181 78
162 54

data col2
input year 7-8
mon 9-10
day 1112
cards
110103751209223
(ch02_17.sas)
(ch02_17.sas)
110101690215005

2
171

SAS --
INPUT

data listcol ;
input name $ 1-6 sex $ height weight ;
cards;
176 65
181 78
162 54
;
(ch02_18.sas)
input name $1-6 sex $8-9 height Weight ;
input name $1-6 sex $ height 11-13 Weight

172

SAS --

3 INPUT INPUT
Formatted
INPUT
. . . ;

:@n +n

CARDS

@n n +n n
)
, .
173

SAS --
INPUT

Formatted ( ) :
data format
input name $6. sex $3. height 4. weight 3.

cards
176 65
181 78
(ch02_19.sas)
162 54

input name $6. @8 sex $2. +1 height : 3. Weight :


2.;
input @8 sex $2. @1 name $6. @15 weight 2.
@11 height 3. ;
174

SAS --
INPUT

$
CHAR10. 10

1998 10 9 1998-109 19981009 9/10/98

SAS

175

SAS --
data for1 INPUT
input date yymmdd8.
Sales
format date yymmdd10.
cards
56-6-13 1100
67.12.15 1200
78 10 2 1300
891001
1400
19960101 1500
20020901 1600

proc print
run
(ch02_20.sas)

1
2
3
4
5
6

1956-06-13
1967-12-15
1978-10-02
1989-10-01
1996-01-01
2002-09-01

1100
1200
1300
1400
1500
1600

176

SAS --
INPUT

8
8

YYMMDD
0 FORMAT

YYMMDD10.

177

SAS --
INPUT

data for2
input sales @12
date
yymmdd10.
format date
yymmdd10.
put date=
cards
1100
56-6-13
1200
67.12.15

run (ch02_21.sas)
178

SAS --
INPUT

:
data forcol ;
input name $6. sex $ 8-9 height 11-13 weight :
2. ;
cards;
176 65
181 78
162 54
;
input name $1-6 @8 sex $2. height : 3. weight 1516 ;
(ch02_22.sas)
input @8 sex $2. name $1-6 @15
weight 2. height
11-13 ;
179

SAS --
DATA

LENGTH <$> . . . ;
INFORMAT . . .;
FORMAT . . .;
LABEL = . . .;
ATTRIB . . . ;
180

SAS --

(Name)
32 (V6 8)

(Type) ($)
(Length) 8 ( 32767)
(Label): 256

(Informat): w.d
(Format): w.d

181

Label
Format
PROC PRINT
Obs
1
2
3
4
5

First_
Name

Last_Name

Salary

Irenie
Christina
Kimiko
Lucian
Fong

Elvish
Ngan
Hotstone
Daymond
Hofmeister

26.600
27.475
26.190
26.480
32.040

Sales Title
Sales
Sales
Sales
Sales
Sales

Rep.
Rep.
Rep.
Rep.
Rep.

II
II
I
I
IV

Date Hired
01/01/1974
01/07/1978
01/10/1985
01/03/1979
01/03/1979

182

ABEL
LABEL
LABEL
LABEL
LABEL variable
variable =='label'
'label'
variable
variable== 'label'
'label'
variable
variable== 'label';
'label';
256
LABEL
DATA LABEL
SAS
PRINT print lab
el.
183

SAS --

1 ,INPUT
$
2 (LENGTH),
8

8
3 (INFORMAT),
SAS
184

SAS --
4 (FORMAT),
SAS
5 (LABEL),
40 ( ),

DATA ATTRIB
ATTRIB

185

SAS --
data sales;
ATTRIB name LABEL= LENGTH=$6
date LABEL= FORMAT=yymmdd10.
INFORMAT=mmddyy8.
amount LABEL= FORMAT=10.2 ;
input name $ 1-6 date amount;

cards ;
INPUT
10/15/98 17665

1/3/1999 18178
11/5/99 16254
;
proc print data=sales noobs label;
run;
(ch02_23.sas)
186

SAS --
SAS

187

SAS

SAS
SAS
SAS

SAS

188

SAS
SAS

(Analyst )
SQL Query
SAS
Input

SAS :
Set
189

SAS --

INPUT
SET
SAS :
SAS
DATA new;
. . . .;
INPUT . . .;
SAS ;
RUN;

DATA new;
SET old;
SAS ;
RUN;

190


SET SAS DATA

LIBNAME
LIBNAME libref
libref 'SAS-data-library';
'SAS-data-library';
DATA
DATAoutput-SAS-data-set;
output-SAS-data-set;
SET
SETinput-SAS-data-set;
input-SAS-data-set;
<additional
<additional SAS
SASstatements>
statements>
RUN;
RUN;
, SET
SET

191


sashelp.class SAS
Work.class SAS
data work.class;
set sashelp.class;
run;
19
5

192

SAS --
DATA DROP= KEEP=
SET DROP= KEEP=
DATA DROP KEEP

: (1) data new(drop=x y);


(2) set old(keep=x y);
(3) data new;
..
drop x y;
run;

193

ROP KEEP
DROP
DROP
DROP variable-list;
variable-list;
KEEP
KEEP
KEEP variable-list;
variable-list;
variable-list

drop sex age;


keep name height weight;
194

SAS --

IF expression;

( IF )

IF expression THEN DELETE;


data a;
set old;
if sex=F;
run;

data a;
set old;
if sex=M then delete;
run;
195

SAS --
Where :
Where where-expression;
data suba;
set class;
where sex=M and age>12;
run;

Where :
where sex=F;
where age in (11,13,15);
196

-
LIBNAME
LIBNAME libref
libref 'SAS-data-library';
'SAS-data-library';
DATA
DATAoutput-SAS-data-set;
output-SAS-data-set;
SET
SETinput-SAS-data-set;
input-SAS-data-set;
WHERE
WHEREwhere-expression;
where-expression;
KEEP
KEEP variable-list;
variable-list;
LABEL
LABEL variable
variable == 'label'
'label'
variable
variable== 'label'
'label'
variable
variable== 'label';
'label';
FORMAT
FORMATvariable(s)
variable(s) format;
format;
RUN;
RUN;

197

HERE -
WHERE
WHERE
WHERE
WHEREwherewhere-
;;
where-

198

where Gender = 'M';

where Salary > 50000;

199

=
^=

EQ

NE

>

GT

<

LT

>=

GE

<=

LE

IN

~=

200


where Gender = 'M';
where Gender eq ' ';
where Salary ne .;
where Salary >= 50000;
where Country in ('AU','US');
where Country in ('AU' 'US');

201


+ - * / **

where Salary / 12 < 6000;


where Salary / 12 * 1.10 >= 7500;
where (Salary / 12 ) * 1.10 >= 7500;
where Salary + Bonus <= 10000;

202


AND & OR |
NOT ^ ~

where Gender ne 'M' or Salary >= 50000;


where Country = 'AU' or Country = 'US';
where Country not in ('AU' 'US');
where Gender ne 'M' and Salary >=50000;

203


WHERE 5 6
7 Names
a. where Months in (5-7)
and Names = .;
where Months in (5,6,7)
b.
and Names = ' ';

c.

where Months in ('5','6','7')


and Names = '.';
204

WHERE
WHERE where

BETWEEN-AND

IS NULL

IS MISSING

CONTAINS

LIKE

205

BETWEEN-AND

BETWEEN-AND

where salary between 50000 and 100000;

where salary not between 50000 and 100000;

206

IS NULL IS MISSING
IS NULL IS MISSING
NOT
IS NULL IS MISSING

where Employee_ID is null;


where Employee_ID is missing;

207

CONTAINS
CONTAINS (?)

where Job_Title contains 'Rep';

WHERE ?
a.Office Rep
b. Sales Rep. IV
c. service rep III
d.Representative

208

KE
LIKE

(%)
(_)

: where Name like '%N';


WHERE
N
where Name like 'T_M%';
WHERE T
M
209


WHERE
M
a. where Name like '_, M_';
b. where Name like '%, M%';
c. where Name like '_, M%';
d. where Name like '%, M_';

210

SAS --
:
DATA WHERE=
SET WHERE=
SET FIRSTOBS= / OBS=
: (1) data new(where=(sex=F));
(2) set old(where=(age>13));
(3) set old(firstobs=6 obs=20) ;

211

Admitjune

libname saslib ';


data work.subset1;

set saslib.Admitjune;

where Sex='F' and

Age > 40;

keep Name Height Weight


212


CONTEN
T

PRINT

ActLevel

Date

DDMMYY10.

Action
Level

Fee

COMMA8.1

Height

1
Obs
4

Name

Full Name
Weight Date

14

Height8 Weight

1
2
3
4
5

Wilcox, E
Johnson, R
Takahashi, Y
Nunnelly, A
Eberhardt, S

67
63
65
66
64

17/06/1997
17/06/1997
18/06/1997
19/06/1997
21/06/1997

141
137
123
140
172

Action
Level
HIGH
MOD
MOD
HIGH
LOW

Full Name
Fee
149.8
149.8
124.8
149.8
124.8
213

SAS --
DATA
,
(IF), (SELECT)
(DO), (ARRAY)
(GOTO), RETAIN
PUT , OUTPUT

214

SAS --
:
var = expression ;

var -- .
expression-- SAS (+, -,*,/,**)
.
.
score = math + verbal; /* */
flag = (mod(num,2)=1);
/* 0,1 1
0 */

y=cos(x)**2;
newv = .;

/* */
/* */
215

SAS --

bonus= salary*0.10;

total=sum(x,y,z);
total=sum(of x1-x6);
date=01jan97d;
year=year(date);
qtr=qtr(date);
month=month(date);
day=weekday(date);
, SAS
.

216

SAS --SAS
SAS
( <, ,. . .> )
(OF )

sqrt(x),
probnorm(x),
tinv(x,df)
sum(of x1, x10-x20, x25)
217

SAS -- (SUM
)

:
var +expression ;

+ ;

var .
expression-- SAS
(+, -,*,/,**) .
.
n+1;
sumx+x*x;
ba+(-deb);

(ch02_24.sas)
218

SAS --RETAIN

INPUT

DATA .
RETAIN ,SAS DATA
, INPUT
.
retain n;
retain var1-var3 (1 2 3);
retain var1-var4(1,2,3,4);
retain;
retain n 0;

n+1;
n=n+1;
219

SAS -- (PUT)
SAS ,
.SAS PUT ,
PRINT RITE(*,*) printf
data
.

x=0.5 y=sin(x)
put Sin( x )= y
run

Sin 0.5 = 0.4794255386


(ch02_25.sas)
PUT ,
,
.PUT LOG .
220

SAS -- (PUT)

PUT

PUT
put @10 x= @30 y=;
LOG 10 X=0.5 30
Y=0.4794255386.
PUT
PUT X 10 20 Y
30 40 6
put x 10-20 .6 y 30-40 .6;

221

SAS -- (PUT)
C FORTRAN .
PUT

put x 20.8 y 20.8


X 1 20 8 Y 21
40 8 20.8 SAS

$ . $10.
10

PUT

222

SAS -- (PUT)

PUT

PUT PUT
@
put i @
PUT
PUT FILE
PUT PUT
file print
PUT

223

SAS -- (PUT)

FILE
PUT
file out.txt
PUT
tmp.out tmp.out
SAS

C:\SAS\TMP.OUT
(ch02_25.sas)
224

SAS -OUTPUT

OUTPUT

SAS

.
OUTPUT 1 2 ;
DATA , DATA
, .
DATA OUTPUT ,
OUTPUT .
1:
data normal50;
do k=1 to 50;
x=normal(0);output;
end;
run ;
(ch02_26.sas)

225

SAS -
OUTPUT data a;

data a;
set sasuser.class;
ratio=weight/height;
run;

set sasuser.class;
ratio=weight/height;

output;
run;

: .
stu:

no g1 g2 g3 g4
1 3.3 3.4 3.5 3.6
2 3.3 3.3 2.8 3.0
3 3.7 3.8 3.8 3.6

data new(drop=g1-g4);
set stu;
grade=1; gpa=g1; output;
grade=2; gpa=g2; output;
grade=3; gpa=g3; output;
grade=4; gpa=g4; output;
run;
226

SAS -OUTPUT

4: SAS .
data classm classf;
set sasuser.class;
if sex='M then output classm;
if sex='F then output classf;
run;
(ch02_26.sas)

227

SAS --

IF THEN ;
ELSE ;

<, LT, >, GT, LE,GE


= EQ, GE, NE, IN

& AND, | OR, ^ NOT.

IF expression THEN
DO;
statements ; . . .
END;
ELSE
DO;
statements ; . . .
END;
228

SAS --
y=100+y;
(1) if sex=F then

if upcase(dest)=LAX then y=x+z;


(2) if sum le 170 then delete;
(3) if upcase(dest)=LAX then
do;
y=x+z;
city=Dallas;
end;
(4) if x>=0 then x=2*x
ELSE x = -x;

229

SAS --

SAS
SAS SELECT
IF
ELSEIF ELSE
SELECT
SELECT ( );
WHEN( ) ;
WHEN( ) ;

OTHERWISE ;
END;

230

SAS --

, ,

SELECT ,
,
,
SELECT .
OTHERWISE
OTHERWISE

231

SAS --

SELECT;
SELECT

WHEN( ) ;
WHEN( ) ;

OTHERWISE ;
END;

SELECT WHEN

WHEN
OTHERWISE
232

SAS --

(1) SELECT(month)

WHEN(Feb, Mar, Apr) put


WHEN(May, Jun, Jul) put
OTHERWISE put ' ';
END
(2) SELECT
WHEN(age<=12) put
WHEN(age<35) put
OTHERWISE put
END

233

SAS --

SAS
DO DO

DO TO BY

END
DO END

234

SAS --
1 BY

data;
DO i = 1 TO 20 BY 2;
j = i**3;
put i 3. j 5.;
END;
run;
1 3 5 7 19
LEAVE C break

235

SAS --

1000
if j>1000 then LEAVE
CONTINUE

data;
do x=0 to 3.1415926 by 0.01;
y = cos(x);
if y<0 then CONTINUE;
z = sin(x);
put x 5.2 y 20.7 z 20.7;
output;
end;
run;
(ch02_27.sas)
236

SAS --
X 0 = 3.1415926
0.01
END X

=0
/2 cos(X) sin(X) .

237

SAS --
:
do i=2 to 10 by 2;
do i=10 to 2 by 2;
do x=3.6 to 4.8 by 0.05;
do n=1, 5, 10, 30, 60;
do n=1, 5 to 10 , 20 , 30 ;
do month=JAN, FEB, MAR;
do z=k to n/10 ;

238

DO WHILE( )

END

1333333
239


data;
x=1333333
i=3;
DO WHILE (mod(x,i) ^= 0);
i=i+2;
END;
if i<x then put x= ' ';
else put x= ' ';
run;
(ch02_28.sas)
mod(x,i) x i
240

DO UNTIL (

END

241


data;
n=0;
do until (n>=5);
n+1; put n=;
end;
run;
n=1 2 3 4 5 n 5
n>=5
n+1
n=n+1
242


DO-END , DO-END
, .
: 20 2000 ( 7.5%,
), 20 .
data; capital=0;
do year=1 to 20;
capital=2000+capital;
do month= 1 to 12 ;
interest=capital*(0.075/12);
capital+interest;

end; output;
month
end;
run;
(ch02_29.sas) 13

243

-
data reaction;
length conc $4;
do amount=.9 to .6 by -.1;
do conc= '1%','1.5%','2%','2.5%','3%';
input time @@;
output;
end;
end;
datalines;
10.9 11.5 9.8 12.7 10.6
9.2 10.3 9.0 10.6 9.4
8.7 9.7 8.2 9.4 8.5
7.2 8.6 7.5 9.7 7.7
;
run;
proc print;
title 'Reaction times for biological substrate';
run;

amount
conc

time

244


SAS DO

Data ;
do i=3,7, 11 to 23 by 3 while (i**2<200) ;
j=i**2 ;
put i= j= ;
end;
run;
i 3,7,11,14 , i 17 i
289<200, , . WHILE
.

245

--
SAS

SAS

ARRAY

ARRAY tests(3) math chinese english (0,0,0)

246

--
SAS

. , tests(1)
math, tests(2) chinese,tests(3)
english .

247

--
ARRAY x(3)
x x1 x2 x3
:

ARRAY sales(95:97) yr95 yr97


sales(95) yr95 sales(96)
yr96 sales(97) yr97

,
,
248

--

tests

ARRAY tests(*) math chinese english (0, 0, 0)


DIM( )

array table(2,2) x11 x12 x21 x22;


table(1,1) x11 table(1,2) x12 table(2,1)
x21 table(2,2) x22
249

--
,
$ ,
.
ARRAY $

ARRAY names(3) $ 10 child father


mother

250

--

SAS

ARRAY
_TEMPORARY_
_TEMPORARY_
ARRAY x(3) _TEMPORARY_ (0, 0, 0)
x
x(1) x(2) x(3) x1 x2 x3

251

--

SAS
comp1-comp10 prin1-prin6
DO
data sales
input comp1-comp10 prin1-prin6
ARRAY y(*) comp1-comp10 prin1-prin6
tot=0
do i=1 to DIM(y)
tot + y(i)
end
cards

run;

252

--

_NUMERIC_
_CHARACTER_
_ALL_ _ALL_
y
_NUMERIC_ _ALL_ :
ARRAY y(*) _NUMERIC_
ARRAY y(*) _ALL_
SAS SUM(OF
) tot SUM(OF comp1-comp12
prin1-prin6)
SUM(OF Y{*})

253

-
Data quizzes;

Input name $ quiz1-quiz5;


Array qz(5) quiz1-quiz5;
Drop quiz1-quiz5;
Do test=1 to 5;
if qz(test)=. Then qz(test)=0;
score = qz(test);
output;
End;
Datalines;
Smith 8 7 9 . 3
Jones 4 5 10 8 4
;
Run;
Proc print data=quizzes;
Run;

output do

transpose

254

SAS --Input
@
@

input DATA
data garden;
input store : $13. count @; Proc print data=garden;
do i=1 to count;
Title Gardening materials
input item : $ 10. price : 5.2
@;
purchased
Spring 2004;
output;
Run;
end;

drop i;

datalines;
jmart 4 rake 1250 sprinkler 875 bench 12000 chair 3525
woodsons 3 edging 750 planter 1365 basket 870
homenGarden 5 sweeper 1185 gloves 350 shears 2100
spade 3450 trimmer 7640
;
Run;

255

SAS --Input

@@

input input

data sat;
Input name $ verbal math @@;
Total = verbal + math;
Datalines;
Sue 610 560 John 720 640 Mary 580 590
Jim 650 760 Bernard 690 670 Gary 570 680

Kathy 720 780 Sherry 640 720

;
Run;
Proc print;
Run;
256

SAS --Input

Retain
retain

257

258

SAS --Input
#n
n

sas

259

SAS --sas

260


1. class :
(1) sex=f ;
(2) name,heifht,weight (
SAS );
(3) ratio=weight/height;
(4) SELECT OUTPUT BCLASS
.
261


2. DO :
A 1 31.5
A 2 29.8
A 3 32.4
B 1 40.1
B 2 41.1
B 3 42.0
C 1 50.1
C 2 51.2
C 3 50.8
(1) (TYPE,GROUP,Y) DABC;
(2) IF where TYPE=
DAC.
262


. A researcher had four subjects in a placebo group and four in a dru
g group. A score variable is measured on each subject. She would, for
example, like to structure the SAS data set to appear as follows:
GROUP
SCORE a. Write an input statement to read the data
values entered in data lines( i.e., with one
P
77
or more blanks between the group
P
76
designation and the score and one data line
P
74
for each pair of values).
P
72
b. Suppose it is preferred to enter the data
D
80
values on two lines as follows:
D
84
P 77 P 76 P 74 P 72
D

88

90

D 80 D 84 D 88 D 90
Write an input statement for this arrangement.
263


c. Instead, consider that the four scores for the placebo
group are placed on the first line and the four scores
for the drug group on the next as follows:
P 77
76 74 72
D 80 84 88 90
Write a data step to read these data. Make sure that
the data set contains a group as well as a score
variable.
d. Modify the part (c) program so that the four subjects
in each group has a subject number from 1 to 4.
264

SAS
SAS
SAS
SAS

265

SAS
SAS

SAS

SAS

A
B

B
266

SAS --

NUM VARA

A:

1
2
5

NUM VARB

A1
A2
A3

B:

3
4
6

B1
B2
B3

(Concantenate)

COMBINE:

NUM
1
2
5
3
4
6

VARA VARB
A1
A2
A3
B1
B2
B3

267

SAS --
NUM VARA
A:

1
2
5

NUM VARB

A1
A2
A3

B:

3
4
6

B1
B2
B3

(Interleave)

COMBINE:

NUM
1
2
3
4
5
6

VARA VARB
A1
A2
B1
B2
A3
B3

A
B
NUM

268

SAS
SET SAS (Concatenate):
DATA SAS-data-set ;
SET SAS-data-set1
SAS-data-set2 . . . ;
SAS ;
RUN;

269

SAS
NUM VARA
A:

1
2
5

NUM VARB

A1
A2
A3

B:

3
4
6

B1
B2
B3

DATA COMBINE;
set A B;
run;

COMBINE:

NUM
1
2
5
3
4
6

VARA VARB
A1
A2
A3
B1
B2
B3

(ch02_30.sas)

270

SAS
SET SAS (Interleave)
DATA SAS-data-set ;
SET SAS-data-set1
SAS-data-set2 . . . ;
BY Variables;
SAS ;
RUN;
271

SAS
NUM VARA
A:

1
2
5

COMBINE:

A1
A2
A3

B:
DATA COMBINE;
SET A B;
BY NUM;
run;
NUM
1
2
3
4
5
6

VARA VARB
A1
A2
B1
B2
A3
B3

NUM VAR
B
3
4
6

B1
B2
B3
(ch02_31.sas)
272

SAS
by
. , SORT
.
PROC SORT SAS :
PROC SORT DATA=SAS-dat-set1
OUT=SAS-dat-set2;
BY by-variables;
RUN;
273

SAS
C:

NUM VAR
1
C1
2
C2
2
C3
3
C4

COMBINE:

D:
data combine;
set C D;
by num;
run;
NUM VAR
1
C1
2
C2
2
C3
2
D1
3
C4
3
D2
3
D3

NUM
2
3
3

VAR
D1
D2
D3

(ch02_32.sas)
274

SAS --
A:

NUM VARA
1
A1
2
A2
3
A3

B:

NUM VARB
1
B1
2
B2
4
B3

(Match Merge)
COMBINE:

NUM VARA VARB


1
A1
B1
2
A2
B2
3
A3
4
B3

A B
NUM

275

SAS
MERGE SAS
DATA SAS-data-set;
MERGE SAS-data-set1 SAS-dataset2;
BY by-variables;
SAS ;
RUN:
MERGE SAS-data-set1(In=var)
SAS-data-set2(In=var);
276

SAS
A:

NUM VARA
1
A1
2
A2
3
A3

B:

NUM VARB
1
B1
2
B2
4
B3

DATA COMBINE;
merge A B;
by num;
run;
COMBINE:

NUM VARA VARB


1
A1
B1
2
A2
B2
3
A3
4
B3

(ch02_33.sas)
277

SAS
A:

NUM VARA
1
A1
2
A2
3
A3

C:

NUM VARB
2
B1
2
B2
3
B3

DATA COMBINE;
merge A C;
by num;
run;
COMBINE:

NUM VARA VARB


1
A1
2
A2
B1
2
A2
B2
3
A3
B3

(ch02_34.sas)
278

SAS
DATA SET ,
Keep,Drop IN=

SET ... k(IN=vark) ...


PDV( ) k
vark =1 k
vark =0,
279

SAS

VAR

A:

B:

A1
A2

data combine;
set a(in=ina)
b(in=inb);
run;
_N_ VAR
INA

PDV:

1
2
3
4

A1
A2
B1
B2

1
1
0
0

VAR
B1
B2

INB
0
0
1
1

280

SAS

1: .
DATA COMBINE1;
merge A(in=ia) B(in=ib);
by num;
if ia=1 and ib=1;
/* if ia and ib; */
run;
2: .
DATA COMBINE ;
merge A(in=ia) B(in=ib);
by num;
if ia ;
/* if ia= ; */
run;

(ch02_33.sas)

281

SAS

: FIRST.var
LAST.var.

DATA ,SAS BY
FIRST.var LAST.var, BY
. DATA
.
data mma;
data mmb;
input num @;
input name $ sex$ num ;
do qtr=1 to 4;
cards;
input sales @ ;
Farr M 1351
output;
end;
Cox F 2512
cards;
Ruth M 3131
1351 10 12 14 20
Bond M 3551
2512 .
. 10 12
;
3131 14 10 10 22
3551 11 13 14 20
282
;

SAS
mma
: name, sex

num; mmb 3 : num,


qtr sales.
comb :
name, sex, num salesum.
DATA COMB(drop=qtr sales);
merge mma(in=ia) mmb(in=ib);
by num;
if ia=1 and ib=1;
if first.num then salesum=0;
salesum+sales;
if last.num=1;
run;
(ch02_35.sas)

283

Excel SAS
D:\Data Microsoft Excel
LM1.xls SAS
LM1 Excel

SAS SAS
PROC IMPORT OUT= WORK.lm1
DATAFILE= D:\Data\LM1.xls"
DBMS=EXCEL REPLACE;
GETNAMES=YES;
RUN;
284

Excel SAS
IMPORT
PROC IMPORT OUT= <SAS . SAS
>
DATAFILE= "< >:\< >\< >"
DBMS= < > [REPLACE];
[ ;]

285

IMPORT

ACCESS Microsoft Access 2000 or .mdb

Microsoft Windows *

.mdb

Microsoft Windows *

delimited file (commaseparated values)


delimited file (default
DLM
delimiter is a blank)
EXCEL Excel 2000 or 2002
spreadsheet
EXCEL9 Excel 97 or 7.0 (95)
spreadsheet
7

.csv

.xls

OpenVMS Alpha, UNIX,


Microsoft Windows
OpenVMS Alpha, UNIX,
Microsoft Windows
Microsoft Windows *

.xls

Microsoft Windows *

EXCEL2 Excel 2000 spreadsheet


000
JMP table
JMP

.xls

Microsoft Windows *

.jmp

UNIX, Microsoft
Windows
OpenVMS Alpha, UNIX,
Microsoft Windows

2002 table
ACCESS Microsoft Access 97 table

97
CSV

TAB

delimited file (tabdelimited values)

.*

.txt

286


admitjune
1 IF actl
evel=low,mod high
DA0 DA1 DA2
2 KEEP= DROP=
3 8 TA1 TA
2
3 actlevel da0,da1
da2, admit1 ;
4 2 8 ta1 ta
2, admit2 ;
287

INFILE


DSD
MISSOVER

288


SAS

Excel

289


SAS

libname
data
set
...
run;

Excel

libname
data
set
...
run;

data
infile
input
...
run;

;
;

;
;

290

sales.csv
sales.csv

120102,Tom,Zhou,M,108255,Sales Manager,AU,11AUG1969,06/01/1989
120103,Wilson,Dawes,M,87975,Sales Manager,AU,22JAN1949,01/01/1974
120121,Irenie,Elvish,F,26600,Sales Rep. II,AU,02AUG1944,01/01/1974
120122,Christina,Ngan,F,27475,Sales Rep. II,AU,27JUL1954,07/01/1978
120123,Kimiko,Hotstone,F,26190,Sales Rep. I,AU,28SEP1964,10/01/1985
120124,Lucian,Daymond,M,26480,Sales Rep. I,AU,13MAY1959,03/01/1979
120125,Fong,Hofmeister,M,32040,Sales Rep. IV,AU,06DEC1954,03/01/1979
120126,Satyakam,Denny,M,26780,Sales Rep. II,AU,20SEP1988,08/01/2006
120127,Sharryn,Clarkson,F,28100,Sales Rep. II,AU,04JAN1979,11/01/1998
120128,Monica,Kletschkus,F,30890,Sales Rep. IV,AU,14JUL1986,11/01/2006
120129,Alvin,Roebuck,M,30070,Sales Rep. III,AU,22NOV1964,10/01/1985
120130,Kevin,Lyon,M,26955,Sales Rep. I,AU,14DEC1984,05/01/2006
120131,Marinus,Surawski,M,26910,Sales Rep. I,AU,25SEP1979,01/01/2003
120132,Fancine,Kaiser,F,28525,Sales Rep. III,AU,05APR1949,10/01/1978
120133,Petrea,Soltau,F,27440,Sales Rep. II,AU,22APR1986,10/01/2006
120134,Sian,Shannan,M,28015,Sales Rep. II,AU,06JUN1949,01/01/1974
120135,Alexei,Platts,M,32490,Sales Rep. IV,AU,26JAN1969,10/01/1997
291

DATA
DATAoutput-SAS-data-set;
output-SAS-data-set;
LENGTH
LENGTH variable(s)
variable(s) $$length;
length;
INFILE
INFILE 'raw-data-file-name';
'raw-data-file-name';
INPUT
INPUTspecifications;
specifications;
KEEP
KEEP variable-list;
variable-list;
LABEL
LABEL variable
variable == 'label'
'label'
variable
variable== 'label'
'label'
variable
variable== 'label';
'label';
FORMAT
FORMATvariable(s)
variable(s) format;
format;
RUN;
RUN;

292

DATA ( )
DATA
SAS
DATA
DATAoutput-SAS-data-set;
output-SAS-data-set;
INFILE
INFILE 'raw-data-file-name';
'raw-data-file-name';
INPUT
INPUTspecifications;
specifications;
<additional
<additionalSAS
SASstatements>
statements>
RUN;
RUN;

DATA

293

INFILE

Windows

infile 's:\workshop\sales.csv';

UNIX

infile '/users/userid/sales.csv';

z/OS
(OS/390)

infile '.workshop.rawdata(sales)';

294

INPUT
INPUT
SAS
DATA
DATAoutput-SAS-data-set;
output-SAS-data-set;
INFILE
INFILE 'raw-data-file-name';
'raw-data-file-name';
INPUT
INPUTspecifications;
specifications;
<additional
<additionalSAS
SASstatements>
statements>
RUN;
RUN;

295

INFILE DLM=

DATA
DATAoutput-SAS-data-set;
output-SAS-data-set;
INFILE
INFILE 'raw-data-file-name'
'raw-data-file-name' DLM='delimiter';
DLM='delimiter';
INPUT
INPUTspecifications;
specifications;
<additional
<additionalSAS
SAS statements>
statements>
RUN;
RUN;

296


sales.csv
SAS Work.subset
3

data work.subset3;
infile 'sales.csv' dlm=',';
input Employee_ID First_Name $ Last_Name $
Gender $ Salary Job_Title $ Country $;
run;
DLM = 09X
Firstobs=n n n=2

p107d01
297


phone2.csv

phone2.csv

1
1
2
2
3
3
4
4
1---5----0----5----0----5----0----5----0----5
James Kvarniq,(704) 293-8126,(701) 281-8923
Sandrina Stephano,, (919) 271-4592
Cornelia Krahl,(212) 891-3241,(212) 233-5413
Karen Ballinger,, (714) 644-9090
Elke Wallstab,(910) 763-5561,(910) 545-3421

298


phone2.csv

phone2.csv

1
1
2
2
3
3
4
4
1---5----0----5----0----5----0----5----0----5
James Kvarniq,(704) 293-8126,(701) 281-8923
Sandrina Stephano,, (919) 271-4592
Cornelia Krahl,(212) 891-3241,(212) 233-5413
Karen Ballinger,, (714) 644-9090
Elke Wallstab,(910) 763-5561,(910) 545-3421

299

DSD
INFILE DSD

INFILE
INFILE 'raw-data-file-name'
'raw-data-file-name'DSD;
DSD;

INFILE DSD

300

DSD
data contacts;
length Name $ 20 Phone Mobile $ 14;
infile 'phone2.csv' dsd;
Name $ Phone $phone2.csv
Mobile $;
input
DSD
run

proc print data=contacts noobs;


run;
DLM=, INFILE DSD

p107d05
301


phone.csv

phone.csv

1
1
2
2
3
3
4
4
1---5----0----5----0----5----0----5----0----5
James Kvarniq,(704) 293-8126,(701) 281-8923
Sandrina Stephano,(919) 871-7830
Cornelia Krahl,(212) 891-3241,(212) 233-5413
Karen Ballinger,(714) 344-4321
Elke Wallstab,(910) 763-5561,(910) 545-3421

302


S
AS

303

MISSOVER
MISSOVER
SAS
MISSOVER INFILE

INFILE
INFILE 'raw-data-file-name'
'raw-data-file-name'MISSOVER;
MISSOVER;

SAS

304

missover
data contacts;
length Name $ 20 Phone Mobile $ 14;
infile 'phone.csv' dsd missover;
input Name $ Phone $ Mobile $;
run;
proc print data=contacts noobs;
run;

5 5
p107a03s
305

Anda mungkin juga menyukai