You are on page 1of 57

SAS

SAS

SAS
SAS

SAS(Statistical Analysis System)

1985
SASSAS/PC

SAS
FDA
SAS SAS9.0

2012430

SAS

BASE

STAT GRAPH

DATA

DMS

IML

QC

OR

ETS

FSP

2012430

SAS

SAS
1.SAS
100

SAS

2.SASSAS

SAS/STAT8
28
2012430

3.SAS

SAS

4.SAS
SAS/BASE

2012430

SASSAS
SAS

run

2012430


PROGRAM EDITOR SAS
LOG

OUTPUT

varSAS
keyslibnameSAS
command

2012430

Command= = =>
optionsPreference

Command line

keys:

clear:
bye:

SASWindows

num:

num

2012430

SAS
File
Edit
Local Submit
Recall
Globals

Options SAS
Help
2012430


SubmitNewOpen
SavePrintView
CutCopyPaste
UndoDOS PromptDOS
Browse Libraries,

SAS/ AssistSAS/ASSIST Help

2012430

10

SAS
*.sd2

SAS(6.12), 8.0

*.sas7bdat
*.sas

EDITORSAS

*.log

LOG

*.lst

OUTPUT

2012430

11

SAS
18
AGE
X2 X1_1 1X XY-1X 1

1.785E-19
1.78510-19

$,
NAME$ SEX$1-200
Zhang Hua , M

2012430

12

SAS
/ +

= EQ ^= NE > GT

>= GE < LT <= LE (


AND& OR | NOT^ (
A>25 & B>30 A>25 | B>30 NOT(A>3)

ABS(x) x SQRT(x) x
EXP(x) e(2.71828)x LOG(x) xe
LOG2(x) x2 LOG10(x) x10

2012430

13

SAS
SAS, (;)
data

Data
(1)(2)SAS
data data

Input
(1)(2)
(3)

Inputinput []
Cardscards;

2012430

14

data esr ; /*esr.sd2,saswork*/


Input x ; /* */
Cards ; /**/
3
9
8
6
5
5
7
3
10
8
10
4
;

2012430

15

PROC

SASSAS
PROC SAS[]

[]data=

proc print ; /*SAS


*/

Run ;

/*,,

*/

2012430

16

Log

2012430

17

Output

2012430

18

---

F8

submit
localsubmit

----
file \

filesave save as
(edit )
2012430

19


F1 Help
F4 recall,edit,

F5 edit
F6 log
F7 output
F8 submit
F9 Keys
Ctrl-E edit
F4

2012430

20

SAS---inputcards
data child; /*child.sd2,saswork*/
input id x1 $ x2 x3 x4 x5 x6; /* , $*/
cards; /*,*/
1 m 32 95.5 14.0 53.5 49.64
2 m 35 92.0 13.0 52.0 41.61
3 m 33 89.0 12.5 53.5 35.81
254 m 176 168.0 53.5 82.0 100.14
255 f
30 91.0 11.0 48.0 35.39
256 f
33 91.0 11.5 47.0 44.98
521 f
178 163.0 51.0 79.0 87.42
;
/* */
run;
2012430

21

SAS---
data a1;
input id x1$ x2 x3 x4;
cards;
1 m 32 95.5
2 m 35
92.0 13.0
3 m 33
89.0 12.5
;
proc print;
run;

:
OBS ID X1 X2 X3
1 1 m 32 95.5
2 3 m 33 89.0
2012430

data a1;
input id x1$ x2 x3;
cards;
1 m
32
95.5
2 m
35
92.0 13.0
3 m
33
89.0 12.5
;
proc print;
run;

X4
2.0
12.5

OBS ID X1 X2

X3

1 m

32 95.5

2 m

35 92.0

3 m

33 89.0
22

@@
data esr;
input x @@ /*,,
*/
cards;
3 9 8 6 5 5 7 3 10 8 10 4
;
proc means;
run;

Analysis Variable : X
N
Mean
Std Dev
Minimum
Maximum
---------------------------------------------------------12
6.5000000
2.5405797
3.0000000
10.0000000
----------------------------------------------------------

2012430

23

SAS
--- .
data child;
input id x1 $ x2 x3 x4 x5 x6;
cards;
1 m 32 95.5 14.0 53.5 49.64
2 m 35
.
13.0 52.0 41.61
3 m 33 89.0 12.5 53.5 35.81
254 m 176 168.0 53.5 82.0 100.14
255 f 30 91.0 11.0 48.0 35.39
256 f 33 91.0 11.5 47.0 44.98
521 f 178 163.0 51.0 79.0 87.42
;
proc means;
run;
2012430

24

SAS

Variable N
Mean
Std Dev
Minimum
Maximum
-------------------------------------------------------------ID
7 184.5714286 194.9639771 1.0000000 521.0000000
X2
7 73.8571429
70.4779601 30.0000000 178.0000000
X3
6 116.2500000
38.2410120 89.0000000 168.0000000
X4
7 23.7857143
19.4825930 11.0000000 53.5000000
X5
7 59.2857143
14.7361719 47.0000000 82.0000000
X6
7 56.4271429
26.2540446 35.3900000 100.1400000
--------------------------------------------------------------

2012430

25

SAS---
SAS:
libname
libname :\;
libname dw c:\teach
. dw.esr

sas\sasworksas
work
sas

saswork

SAS
libname dw c:\teach

data dw.esr;
input x1 x2 x3 ;
()
2012430

26

SASSAS

---set
libname L c:\teach;
data L.child ;
set chlid;
proc print;
run;

data a;
set L.child;
proc print;
run;
2012430

data b;
set a;
run;
Proc
SASproc
proc
data=:
proc means data=L.chlid;

run;
27

SAS---
fileimport
SAS
*.txt) Notebook(
(Tab)
dbase II III*.dbf
excel SAS8.0Excel 972000
Excel

2012430

28

edit
inputcardssas

infileSAS
infile \\.txt (dat) ;

input x1

x2

2012430

29

xy e:\sas\xy.txt
56 34 57 35 58 36 59 37 60 38
61 39 62 40 63 41 64 43 61 28
OBS

56

34

57

35

58

36

proc print;

59

37

run;

60

38

61

39

62

40

63

41

64

43

10

61

28

data Li_1;
infile 'e:\sas\xy.txt';
input x y @@;

2012430

30

SAS---

rename =
rename id=x0;

= y=log10(x);

SAS

2012430

31

data abc;

OBS

SUM

SUMZ

input a b c @@;

21

22

26

69

69

sum=a+b+c;

16

85

sumz+sum;

12

21

106

cards;

16

23

46

152

19

24

176

21 22 26 5 7 4 12 3 6

7 16 23 19 2 3
;
proc print;
run;

2012430

32

keepdrop

keep <>

drop <>

if

if <> then <>


[else <>]

2012430

33

data keep;
input x1 x2 x3 @@;
x4=log10(x1);
keep x1 x2 x4;
rename x4=lgx1;
Cards;
20 34 32 24 50 93
34 43 56 42 56 88
;
proc print;
run;

OBS

X1

X2

LGX1

20

34

1.30103

24

50

1.38021

34

43

1.53148

42

56

1.62325

keep
drop x3 ;
2012430

34


data drop;
set child;
if id<200 then group=1;
else group=2;
drop x3 x4 x5 x6;
rename id=x0;
proc print;
run;

OBS

X0

X1

X2

GROUP

32

35

33

254

176

255

30

256

33

521

178

drop
keep id x1 x2 group;

2012430

35

SAS---

if <>

if<> then output <1>

else output<2>
Output SASdata
output
output
data
2012430

36

if <> then delete;



1 data a;
OBS

cards;

2 3 5 6 8 9 10

data b;

set a;

10

input x @@;

if x>3; /*x>3
a b*/
proc print;
run;

2012430

37

2
data b1; set child;
if x1=m; proc print; Run;
OBS

1
2
3
4

ID

1
2
3
254

X1

X2

X3

X4

X5

X6

m
m
m
m

32
35
33
176

95.5
92.0
89.0
168.0

14.0
13.0
12.5
53.5

53.5
52.0
53.5
82.0

49.64
41.61
35.81
100.14

data b1 b2;
set child;
if x1=m then output b1 ;
else output b2;
run
2012430

38

3
data a;
input id x1 x2 x3 ;
cards;
1 0 12 1
2 1 55 2
3 0 15 2
4 1 14 3
5 0 42 1
6 0 25 2
7 0 35 4
8 0 27 3
;
2012430

data c1;
set a;
if x1=1 then delete ;
proc print;
run;

OBS ID X1 X2 X3
1
1 0 12 1
2
3 0 15 2
3
5 0 42 1
4 6 0 25 2
5
7 0 35 4
6
8 0 27 3
39

4
data c2;

set a;
if x1=0 then output ;
if x3>=2 then x3=2;
output

proc print;

OBS ID X1 X2
1
1 0 12
2
3 0 15
3
5 0 42
4 6 0 25
5 7 0 35
6 8 0 27

X3
1
2
1
2
4
3

run;

2012430

40

5
data c3;

set a;
if x3>=2 then x3=2;
if x1=0 then output ;
proc print;
run;

2012430

OBS ID
1 1
2 3
3 5
4 6
5 7
6 8

X1
0
0
0
0
0
0

X2
12
15
42
25
35
27

X3
1
2
1
2
2
2

41

SAS---

proc sort []

by [descending]
sortby
[]1.data
proc sort data=L.px1;
2.out=
proc sort out=L.px2;

[descending]
by descending x1;
2012430

42

1.
Libname Ld:\sas\sas1;

proc sort;

data L.class1;

by descending sum;

input name $ kc1 kc2 kc3 kc4;

proc print;

sum=(kc1+kc2+kc3+kc4);

Proc sort out=L.class2;

cards;

by sum;

zhao 83 76 68 88

proc print;

qian 76 77 80 69

run;

sun

75 82 78 78

li

80 78 85 81

;
proc print;

2012430

43

OBS

NAME

KC1

KC2

KC3

KC4

SUM

zhao

83

76

68

88

315

qian

76

77

80

69

302

sun

75

82

78

78

313

li

80

78

85

81

324

KC1

KC2

KC3

KC4

SUM

OBS

NAME

li

80

78

85

81

324

zhao

83

76

68

88

315

sun

75

82

78

78

313

qian

76

77

80

69

302

2012430

44

OBS

NAME

KC1

KC2

KC3

KC4

SUM

qian

76

77

80

69

302

zhao

83

76

68

88

315

sun

75

84

78

78

315

li

80

78

85

81

324

2012430

45

SAS---

set <A > < B> ;


ABAB

data AB;
set A b;
run;

2012430

46

ABAB
AB
AB

AB

A
NO
01
02
03
04

AGE SEX HEIGHT


16
m
178
16
m
170
17
m
175
18
m
169

2012430

B
NO AGE SEX HEIGHT WEIGHT
11
16
f
160
55
12
17
f
165
60
13
17
f
159
50

47

AB
OBS NO

2012430

AGE

SEX

HEIGHT

WEIGHT

01

16

178

02

16

170

03

17

175

04

18

175

11

16

160

55

12

17

165

60

13

17

159

50

48


merge <1> <2> ;

[by ;]
by

2012430

49


data a;
input id x1 x2 ;
cards;
1 11 12
2 21 22
4 41 42
5 51 52
;
data b;
input id x3;
cards;
1 13
3 33
4 43

2012430

data ab;
merge a b ;
by id ;
proc print;
run;

OBS
1
2
3
4
5

ID
1
2
3
4
5

X1
11
21
.
41
51

X2
12
22
.
42
52

X3
13
.
33
43
.

50


data a; input id x1 x2 ;
cards;
1 11 12
2 21 22
4 41 42
4 411 422
5 51 52
;
data b; input id x3;
cards;
1 13
3 33
4 43
5 53
5 533
2012430

;
data c;
merge a b;
by id;
proc print;run;
OBS
1
2
3
4
5
6
7

ID
1
2
3
4
4
5
5

X1
11
21
.
41
411
51
51

X2
12
22
.
42
422
52
52

X3
13
.
33
43
43
53
533
51

PROC
WHERE PROC

where <>

proc print;
data a;

where x1>20;

input id x1 x2 ;

run;

cards;
1 11 12

OBS

ID

X1

X2

2 21 22

21

22

3 41 42

41

42

4 45 44

45

44

5 51 52

51

52

;
2012430

52

SUM

SUM

SUM
data abc;
input a b c @@;

OBS

cards;

21

22

26

21 22 26 5 7 4 12 3 6

7 16 23 19 2 3

12

16

23

proc print;

19

sum a b c;

==

==

==

run;

64

50

62

2012430

53

title

PROC

title [n]
nn1101
132

title n title; title2;

2012430

54

data a;

proc means data=a;

input x @@;

title 'sample a';

cards;

proc means data=b;

4 5 6 7 8 9 3 4 5

title 'sample b';

proc means data=ab;

data b;

title 'sample ab';

input x @@;

proc print data=a;

cards;

title;

45 34 56 33 44 54 32 36

run;

;
data ab;
set a b;

2012430

55

sample a

Analysis Variable : X
N

Mean

Std Dev

Minimum

Maximum

---------------------------------------------------------------------------9

5.6666667

2.0000000

3.0000000

9.0000000

---------------------------------------------------------------------------sample b
Analysis Variable : X

Mean

Std Dev

Minimum

Maximum

------------------------------------------------------------------------------8

41.7500000

9.5131488

32.0000000

56.0000000

-------------------------------------------------------------------------------

2012430

56

sample ab

Analysis Variable : X
N

Mean

Std Dev

Minimum

Maximum

--------------------------------------------------------------------------------17

22.6470588

19.6530569

3.0000000

56.0000000

-------------------------------------------------------------------------------OBS
1
2
3
4
5
6
7
8
9
2012430

X
4
5
6
7
8
9
3
4
5
57

You might also like