SAS中数据的导入
2020-06-10 本文已影响0人
overmoon
SAS中数据的导入
SAS中数据导入可以有四种类别
- 直接将数据输入SAS数据集
- 利用原始数据文件创建SAS数据集
- 将其他数据文件转换成SAS数据集
- 直接读取其他软件的数据文件
建立SAS数据集的的5种方法
- data步自己输入数据(参考第3小节)
- data步利用 set 语句建立,从逻辑库中进行复制
- 从外部调入,用 infile 语句,从外部导入(见第3小节)
- 利用‘导入数据’功能建立(见第2小节)
- 利用EFI(external file interface)功能导入,用于导入自定义格式的数据文件
*data步利用 **set** 语句建立 ;
*将uspresident赋值给abc;
data abc;
set lianxi.uspresident;
run;
proc print;
run;
1. 使用viewtable窗口输入数据
- 打开空的viewtable:菜单栏>工具>表编辑器
- 设置列属性
- 输入数据
- 保存表:文件>另存为
- 打开现有的表:
- 工具>表编辑器:打开viewtable窗口
- 文件>打开
- 在SAS程序中使用表
* 将sasuser逻辑库中的coffee表打印出来;
proc print data = sasuser.coffee;
run;
2.使用导入向导读取文件
以导入CSV文件为例
- 启动导入向导:菜单栏>文件>导入数据
- 找到你的文件:standard data source选择文件格式>next>指明文件位置>next
- 默认情况SAS使用文件的第一行作为变量名,并从第二行开始读取数据
- 自定义读取:单击 选项 打开分隔文件选项窗口,自定义是否获取变量名,及指定从第几行开始读取数据
- 选择SAS逻辑库和成员名称>next
- 若选择 work 逻辑库,当退出SAS时,该数据集将被删除
- 选择其他逻辑库,数据集将被保留
- 最后一个窗口:选择是否将该过程中 proc import 语句保存起来
*该过程的SAS程序;
PROC IMPORT OUT= WORK.jianmo151
DATAFILE= "C:\Users\fzq\Desktop\cov\yuce\jianmo151.csv"
DBMS=CSV REPLACE;
GETNAMES=YES;
DATAROW=2;
RUN;
3.指定原始数据位置
若文件为原始文件(例如文本文件),SAS也可以很方便的读取。
- 内部原始数据(直接输入数据)
- 使用 datalines 表明内部数据
- datalines 语句必须是 data 步中的最后一条语句,其后的所有行都被视为数据,直到SAS遇到一个分号为止
*将内部数据读取到SAS新建的数据集uspresident;
data uspresident;
*input表示含有的变量,若后边+$,则改变量为字符型,否则为数值型;
input president $ party $ number hight ;
*生成一个新变量overall,变量标签为‘总和’;
overall=number+hight;
label overall="总和";
datalines;
asams F 2 3
lincoln R 16 4
grant R 18 4
kennedy D 35 3
;
*按数据集中的某一列变量进行降序排序;
proc sort data=uspresident;
by descending overall;
run;
*输出查看,'_numeric_'表示只查看数值型变量,‘_character_’表示只查看字符型变量;
proc print data=uspresident;
var _numeric_;
title '美国总统';
run;
-
以上数据集只是临时数据集,若把程序一句改为
data lianxi.uspresident;
则该数据集保存到 lianxi 逻辑库中,而不是默认的 WORK逻辑库,该数据集由临时数据集变为永久数据集,既退出SAS后不会被删除 -
另外,还可以用
libname
命令创建永久数据集,格式为 libname+自建目录名(逻辑库名)+'目录地址'(逻辑库的存放位置),例 :
libname lianxi 'D:\SAS';
data lianxi.uspresident;
input president $ party $ number hight ;
datalines;
asams F 2 3
lincoln R 16 4
grant R 18 4
kennedy D 35 3
;
run;
- 外部原始文件
- 使用 infile 语句告知SAS文件名和路径,及选项
- infile 语句紧跟 data 语句之后,必须在 input 语句之前
- 长记录,SAS默认外部文件中的记录长度不超过256个字符(行字符个数,包括空格),若超过了这个长度,则需要在 infile 语句中使用 lrecl= 选项
*从外部文件读取数据到SAS数据集;
data uspresidents;
infile 'c:\mydata\president.dat' lrecl=2000;
input president $ party $ number;
run;
4.取空格分隔的原始数据
未完待续
参考文献
The Little SAS Book,Fifth Edition.