建立逻辑库
先在硬盘上建立相应目录
在编辑窗口输入libname命令 libname mdb "c:\mdb";或者手动添加
再按F8或者小人按钮
ps:
Maps,Sashelp,Sasuser是内置数据库,里面有样本数据
work是临时逻辑库,假设使用数据集没有指定他的逻辑库,退出sas后work里面的数据删光
新建的逻辑库名在退出sas的时候会被删光,但是数据还在,所以你重启sas需要用libname去重新连接。删除逻辑库也只是删除逻辑库名,数据要在磁盘删除。
变量
以字母或者下划线开头,不区分大小写
data cr;
y=1;
z="abc";
w="xyz";
run;
因此,sas里面的变量就是数据集里面的列。
data sfz;
length id $18.;定义id长度,避免身份证号被切割
input id sex $;
card;
370825186586686877 M
320113478689978968 F
;
run;
proc print;
run;
Data、time、datetime类型
date riq;
cdate="3mar2010"d;#日期
ctime="7:30"t;#时间
cdatetime'="6jan2010:8:18:30pm"dt;#时间戳
run;
prop print;
format cdate yymmdd10. ctime time10. cdatetime datetime22.'
run;
读取外部文件
data _null_;#分析过程不需要建立数据集
set mydb.student;
file "c:\temp\stu1.txt";
put id name $ sex $ score;
run;
libname personal "D:/Documents/post-graduate-2/SAS/personal";
run;
proc print data=personal.sesame;
run;
proc contents data=personal.sesame;
run;
3.1filename读取文件
filename other 'D:/Documents/post-graduate-2/SAS/personal/ch5ex2.dat';
data test;
infile other delimiter='09'x;##设置分割符号,符号为tab
input test1 test2 test3 group;
run;
filename other '$HOME/my_shared_file_links/u59983650/other';#other就是后面链接
data test;
infile other(ch5ex2.dat) delimiter='09'x;
input test1 test2 test3 group;
run;
filename other clear;
3.2 读数据的其他场景
* read instream data;
*data has four variables: firstname lastname age gender;
*data has three observations;
*Kevin Murphy 18 M. Jordan Smith 20 M. Ashley Cooper 17 F;
读数据并且写进你自己文件夹
data test;
input firstname $ lastname $ age gender $;#如果输入的数据是字符型,后面加$
datalines;
Kevin Murphy 18 M
Jordan Smith 20 M
Ashley Cooper 17 F
;
run;
*4 write the above dataset to your personal folder;
data _null_;
set test;
file '$HOME/personal/test.dat';
put firstname $ lastname $ age gender $;
run;
函数名(OF 变量名列表)”,其中变量名列表可以是任何合法的变量名列表,比如x1 ,x2,x3的和等价地可以用SUM(OF x1 x2 x3)或SUM(OF x1-x3)表示
cards和datalines几乎等价
data test1;
input test1 1-2 test2 3-4 test3 5-6 site $ 7-9 repeat 10;
mtest = round(mean(of test1-test3));
cards;
233532LOC0
282431LOC0
503945AOC0
484146LOC1
333738AOC1
412936AOC0
303243LOC1
254240LOC1
272330AOC0
364547AOC1
;
run;
data test2;
set test1;
if repeat=1 then output;
run;
data test3;
input @1 test1 2. +2 test2 2. @10 repeat 1.;
test = max(test1,test2);
cards;
233532LOC0
282431LOC0
503945AOC0
484146LOC1
333738AOC1
412936AOC0
303243LOC1
254240LOC1
272330AOC0
364547AOC1
;
run;
4、SAS处理流程
外部数据/SAS表/数据库—>数据步骤DATA(数据处理)——>SAS数据集
——>过程步PROC(分析处理数据)
DATA语句
DATA 语句的选项
DROP 选项 ( 不列出某些变量 )
KEEP 选项 ( 列出某些变量 )
LABEL 选项 ( 给数据集加标签 )
RENAME 选项 ( 重命名变量 )
数据步基本语句总结
DATA、INPUT、DATALINES(CARD)、LENGTH、LABEL、LOSTCARD;INFORMAT;MISSING;OPTIONS
DATA语句
格式:DATA <数据集名> <选项>
常用选项:label=为数据集提供标记;DROP=列出不包括在数据集的变量
如果有多个DATA,那么proc处理的是最后一个DATA
如果分析过程不需要建立数据集,DATA 语句中的数据集名可以是_NULL_。
看proc运行哪个DATA
DATA student;
INPUT num $ name $ sex $;
DATALINES;
060101 zhangsan f
060102 liling m
060201 liufeng f
DATA score;
INPUT num $ phy math ehgl;
DATALINES;
060101 89 90 77
0660102 92 70 88
060201 80 84 75
PROC PRINT;
RUN;
不建立数据集
DATA _null_;
a=sin(3.14159/4);
put a;
run;
建立永久数据集
前面增加建立逻辑库环节
INPUT语句
用于描述输入的数据。从外部文件或紧跟的CARDS读入数据,赋给给语句列出的各个变量
格式:INPUT <数据项描述>
一般认为读入的数据是字符型,除非
变量后面有$号
使用字符的输入格式表示
变量事先被定义成字符型
数据中的缺失值用“.”表示。如果读入数据与数据类型不匹配,则按无效数据处视为缺失值。
INPUT语句:列表输入,列输入(例子)
INPUT ID $ 1-18birthdayyear 7-10 name $19-29