实验一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