SAS自学(一)介绍、读数据

  1. 建立逻辑库

先在硬盘上建立相应目录

在编辑窗口输入libname命令 libname mdb "c:\mdb";或者手动添加

再按F8或者小人按钮

ps:

  • Maps,Sashelp,Sasuser是内置数据库,里面有样本数据

  • work是临时逻辑库,假设使用数据集没有指定他的逻辑库,退出sas后work里面的数据删光

  • 新建的逻辑库名在退出sas的时候会被删光,但是数据还在,所以你重启sas需要用libname去重新连接。删除逻辑库也只是删除逻辑库名,数据要在磁盘删除。

  1. 变量

以字母或者下划线开头,不区分大小写

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;
  1. 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;
  1. 读取外部文件

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

  1. 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;

建立永久数据集

前面增加建立逻辑库环节

  1. INPUT语句

  • 用于描述输入的数据。从外部文件或紧跟的CARDS读入数据,赋给给语句列出的各个变量

  • 格式:INPUT <数据项描述>

  • 一般认为读入的数据是字符型,除非

  1. 变量后面有$号

  1. 使用字符的输入格式表示

  1. 变量事先被定义成字符型

  • 数据中的缺失值用“.”表示。如果读入数据与数据类型不匹配,则按无效数据处视为缺失值。

INPUT语句:列表输入,列输入(例子)

INPUT  ID $ 1-18birthdayyear 7-10 name $19-29

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值