实验一SAS系统及数据集创建

  • 格式:doc
  • 大小:255.50 KB
  • 文档页数:9

实验一 SAS系统及数据集创建

一、实验目的:了解SAS逻辑库组成,创建。学习SAS数据集(数据文件,数据视窗)的命名,创建。学习数据集导入导出,变量定义,变量选择,观测选择等操作,缺失值插值。

二、 实验内容

(1) 用户用SAS数据步(DATA STEP)创建一个数据集的方法,DATA程序步的主要步骤:

Data 所要创建的数据集名 ;

Infile ‘读取的外部文件名 ’ < FIRSTOBS=开始读入的行>< OBS=结束行> ;

Input 变量1 读入模式 变量2 读入模式……;

Run ;

(2) 确定变量的读入模式共有四种:

column模式

Input 变量1 < $> 开始列<-结束列><.小数位> 变量2 …… ;

例1:

data testd1;

infile 'e:dmydir\testdata.dat' firstobs=2 obs=4;

input code $1-8 sex $9 bdata $10-16 income 17-23 .2;

run;

上面的程序的数据步在临时库WORK中创建了SAS数据集work.testd1,而过程步PRINT则显示该数据集。

formatted模式

格式一:Input 变量1 输入格式 <@|@@>… ;

格式二:Input (变量表) (输入格式表) <@|@@> ;

例2:

Data testd2 ;

Infile ‘e:\dmydir\testdata.dat’ ;

Input code $ 1-8 sex $ 9 @ ;

Input bdate $ 10-16 income $17-23 .2 ;

Proc print data=testd2 ; Run

;

list模式

格式一:Input 变量1 <$><&> <@|@@>…… ;

格式二:Input 变量1 <:|&|~> <@|@@>… ;

例3:

Data testd5 ;

Infile ‘e:\dmydir\testdata2.txt’ dsd;

Input name & $15. age address ~ $40. pc ;

Proc print data=testd5 ;

Run ;

例4:

data A600001(label="邯郸钢铁");

input date yymmdd10. oppr hipr lopr clpr vol sums name $ hstocd $;

format date yymmdd10. ; /*设定变量的输出格式 */

label Date="日期|Date"; /*给变量加标签*/

label Oppr="开盘价|Open Price";

cards; /*以下是数据表*/

2001-1-16 8.08 8.4 8.05 8.35 45571 37683964 邯郸钢铁 600001

2001-1-17 8.39 8.5 8.28 8.29 26345 22076348 邯郸钢铁 600001

2001-1-18 8.32 8.4 8.21 8.26 17854 14844434 邯郸钢铁 600001

4、增加变量、选择变量和观测创建新数据集

例5:

Data class2 ;

Input id test1-test5 ;

average=mean(test1,test2,test3,test4,test5);

test4=test1+test2+test3+test4+test5;

Cards ;

980801 100 100 100 100 100

980802 90 100 90 100 90

980803 81 82 83 84 85

Proc print data=class2 ;

Run ;

Input id test1-test5 ; 输入数据

average=mean(test1,test2,test3,test4,test5); 求test1到test5的平均值

test4=test1+test2+test3+test4+test5;

例6:

Data class3 (drop=test1 test2 test3 test4 test5 ) ;

Set class2 ;

Proc print data=class3 ;

Run; 创建class3 数据集,数据来源是class2 中剔除test1 test2 test3 test4 test5

例7:

Data class4 ;

Set class2 ;

if average>=80 and (100=test1 or 100=test2 or 100=test3 or

100=test4 or 100=test5) ;

Proc print data=class4 ;

Run ;

创建数据集class3,数据来源是class2中均值>=80,且test 1~test 5中有一值为100.

三、习题

1、下列为1975-1980年夏威夷岛莫纳罗亚火山每月释放CO2的数据,请将它生成数据集H1,并剔除释放量小于330的观测,生成新的数据集H2。

330.45 330.97 331.64 332.87 333.61 333.55 331.90 330.05 328.58 328.31 329.41 330.63

331.63 332.46 333.36 334.45 334.82 334.32

333.05 330.87 329.24 328.87 330.18 331.50

332.81 333.23 334.55 335.82 336.44 335.99

334.65 332.41 331.32 330.73 332.05 333.53

334.66 335.07 336.33 337.39 337.65 337.57

336.25 334.39 332.44 332.25 333.59 334.76

335.89 336.44 337.63 338.54 339.06 338.95

337.41 335.71 333.68 333.69 335.05 336.53

337.81 338.16 339.88 340.57 341.19 340.87

339.25 337.19 335.49 336.63 337.74

338.36

Data H1 ;

Input id test1-test6;

Cards ;

330.45 330.97 331.64 332.87 333.61 333.55

331.90 330.05 328.58 328.31 329.41 330.63

331.63 332.46 333.36 334.45 334.82 334.32

333.05 330.87 329.24 328.87 330.18 331.50

332.81 333.23 334.55 335.82 336.44 335.99

334.65 332.41 331.32 330.73 332.05 333.53

334.66 335.07 336.33 337.39 337.65 337.57

336.25 334.39 332.44 332.25 333.59 334.76

335.89 336.44 337.63 338.54 339.06 338.95

337.41 335.71 333.68 333.69 335.05 336.53

337.81 338.16 339.88 340.57 341.19 340.87

339.25 337.19 335.49 336.63 337.74 338.36

Proc print data=H1 ;

Run ;

运行结果:

co2 time

330.45 1975/1/1

330.97 1975/2/1

331.64 1975/3/1

332.87 1975/4/1

333.61 1975/5/1

333.55 1975/6/1

331.9 1975/7/1

330.05 1975/8/1

330.63 1975/12/1

331.63 1976/1/1

332.46 1976/2/1

333.36 1976/3/1

334.45 1976/4/1

334.82 1976/5/1

334.32 1976/6/1 333.05 1976/7/1

330.87 1976/8/1

330.18 1976/11/1

331.5 1976/12/1

332.81 1977/1/1

333.23 1977/2/1

334.55 1977/3/1

335.82 1977/4/1

336.44 1977/5/1

335.99 1977/6/1

334.65 1977/7/1

332.41 1977/8/1

331.32 1977/9/1

330.73 1977/10/1

332.05 1977/11/1

333.53 1977/12/1

334.66 1978/1/1

335.07 1978/2/1

336.33 1978/3/1

337.39 1978/4/1

337.65 1978/5/1

337.57 1978/6/1

336.25 1978/7/1

334.39 1978/8/1

332.44 1978/9/1

332.25 1978/10/1

333.59 1978/11/1

334.76 1978/12/1

335.89 1979/1/1

336.44 1979/2/1

337.63 1979/3/1

338.54 1979/4/1

339.06 1979/5/1

338.95 1979/6/1

337.41 1979/7/1

335.71 1979/8/1

333.68 1979/9/1

333.69 1979/10/1

335.05 1979/11/1

336.53 1979/12/1

337.81 1980/1/1

338.16 1980/2/1