sas infile和filename
- INFILE语句
- FILENAME语句
- FILEVAR=选项
- 操作系统自身的技术
首先,你可能要察看原始数据。可以用FSLIST过程。
语法:
PROC FSLIST FILE = file-specification;
RUN;
实际使用中,专门的编辑器,如UltraEdit之类的小软件,用来察看原始文件有着更多的便利。
INFILE
为了读取多个原始文件,可以使用多个INFILE语句。这样数据步会从第一个文件中读出一条记录,再到第二个文件读一条记录,以此类推,读完所有文件再返回第一个文件。如下图所示
FILENAME
你也可以使用FILENAME语句,对原始文件进行串联。如下图所示:
FILENAME语法如下:
FILENAME fileref ('external-file1'
'external-file2' … 'external-filen');
其中fileref是任何8位或以下的有效SAS名称。
'external-file' 是数据文件的物理名。
例如:
filename Q1 ('Month1.dat' 'Month2.dat' 'Month3.dat');
data firstq;
infile Q1;
input Flight $ Origin $ Dest $
Date : date9.
RevCargo : comma15.2;
run;
FILEVAR=
使INFILE语句的FILEVAR=选项,它可以帮助你有条件的连接多个原始文件,如下图所示:
语法:
infile xxx filevar = NextFile;
xxx 是任意的8位或以下的占位名,不是一个实际的文件名或者定义好的文件引用。SAS使用这个占位名在日志中报告处理信息。
NextFile 存放原始数据文件名的变量。
例如:
data movingq;
do I = 11,10,9;
NextFile = "Month"!!put(I,2.)!!".dat";
NextFile = compress(NextFile,' ');
infile xxx filevar = NextFile;
input Flight $ Origin $ Dest $ Date : date9.
RevCargo : comma15.2;
output;
end;
stop;
run;
这个例程把Month11.dat, Month10.dat, Month9.dat三个原始文件装入到movingq数据集中,从中我们可以学到几点:
1. 需要使用STOP语句跳出数据步循环。
2. COMPRESS函数删除了字符串中的空格,使"Month 9.dat"变成"Month9.dat"。
3. 以上程序只在每个原始文件中读出头一条记录。
使用END=选项,我们可以控制数据步读完整个原始文件。
语法:
INFILE file-specification END = variable;
END=选项把是否到达输入文件结尾标志放进variable变量中,如果当前的输入没有到达文件尾,变量值为0;反之变量值为1
该变量不会被写入到输出SAS数据集中。
由此,完整的程序为:
data movingq;
do I = 11,10,9;
NextFile = "Month"!!put(I,2.)!!".dat";
NextFile = compress(NextFile,' ');
do until (LastObs);
infile xxx filevar = NextFile end = LastObs;
input Flight $ Origin $ Dest $ Date : date9.
RevCargo : comma15.2;
output;
end;
end;
stop;
run;
项目中经常用到如下技巧:
data movingq;
MonNum = month(today());
MidMon = month(intnx(‘month’,today(),-1));
LastMon = month(intnx(‘month’,today(),-2));
do I = MonNum, MidMon, LastMon;
NextFile = "Month"!!put(i,2.)!!".dat";
NextFile = compress(NextFile,' ');
do until (LastObs);
infile xxx filevar = NextFile end = LastObs;
input Flight $ Origin $ Dest $ Date : date9.
RevCargo : comma15.2;
output;
end;
end;
stop;
run;
以上程序读出当月和之前两个月的原始数据。这里的重点是INTNX函数,如果我们直接用当前月-1,-2来得到前两个月,在1,2月时程序就会发生错误。INTNX作用是返回间隔某个时间端的时间。函数格式为:
INTNX('interval',start-from,increment)
'interval' 一个字符常量,或者是存放时间间隔单位的变量。表示间隔单位。
start-from 表示日期,日期时间或者时间的SAS表达式,作为起始点。
increment 一个正或者负整数,表示时间间隔的数量。
函数细节可以查询SAS在线帮助。
题外话,与考试无关。项目中用的更多的是读出一个路径下的同一类接口文件,简便方法是使用如下FILENAME。
FILENAME cf_list PIPE 'dir c:|rawdata|cf????.dat /b';
DATA cf_data;
INFILE cf_list;
LENGTH filename $20;
INPUT filename $;
INFILE in FILEVAR = filename END = LastFile;
DO WHILE (LastFile = 0);
INPUT ....
....
;
OUTPUT;
END;
RUN;
这段程序把c:|rawdata下面的所有cf0101.dat,cf0102.dat,...,cf????.dat读入cf_data数据集中。如果看不明白,说明以上的内容你还没有全部理解 :-)
sas infile和filename相关推荐
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制...
SAS学习笔记之<SAS编程与数据挖掘商业案例>(4)DATA步循环与控制.常用全程语句.输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和E ...
- 《SAS编程与数据挖掘商业案例》学习笔记之十四
继续<SAS编程与数据挖掘商业案例>学习笔记系列,本次重点:常用全程语句 所谓全程语句,是指可以用在任何地方的sas语句,既可以用在data数据步语句里面,也可以用在proc过程步里面,甚 ...
- python导入sas数据集_运用import过程进行SAS数据导入完全实用教程
运用import过程进行SAS数据导入完全实用教程 1 单个规范格式文件导入. 对单个文件进行导入是我们遇到最多的情况,主要有以下几种: 1.1 对指定分隔符('|',' ','!','ab'等)数据 ...
- SAS导入txt数据
众所周知,在我们进行数据处理分析的时候,不会是一直自己手动输入,这就要求从外部读取数据了. 下边我们讲解从txt文件中将数据读取出来. 我们读取的txt文件如下college_inf.txt: dep ...
- sas 导入csv文件_SAS导入外部数据
SAS导入外部数据 成功导入外部数据是sas分析的第一步,也是最基础的一步,其重要性我就不累述.在常规工作中我们经常使用excel,access等建立数据,不管数据类型是什么,举一反三,一是百通.在本 ...
- sas数据集怎么导出_SAS写入数据集
类似的阅读数据集,SAS可以写不同格式的数据集.它可以写从SAS文件中的数据,以普通的文本文件.这些文件可以通过其它软件程序读取.SAS使用PROC EXPORT写入数据集. PROC EXPORT ...
- Linux C程序命令行传参
在命令行环境下,执行已编译的程序时,将命令行参数以同一行的附加参数的形式传入到要执行的程序中.C编译器允许main()函数没有参数,或者有两个参数(也有可能更多,是对标准的扩展).一般形式为" ...
- python信用卡违约_Python信用卡验证
我是一个初级Python学习者,目前正在研究Luhn算法来检查信用卡验证.我写了大部分代码,但是我有两个错误,第一个是赋值前引用num.我得到的第二个是类型为'\io.TextIOWrapper'的对 ...
- github/python/ show me the code 25题(一)
先上网址 https://github.com/Show-Me-the-Code/show-me-the-code 初学python拿来练手,记住一些常用的库和函数 第 0000 题:将你的 QQ 头 ...
最新文章
- 电气期刊论文实现:二进制遗传算法求解考虑输电损耗的负荷最优分配【经济调度,有代码】
- GIAC 2020 全球互联网架构大会演讲实录:基于TarsGo的微服务技术架构实践
- OpenCV3 识别图中表格-JAVA 实现
- python linux alias,linux命令:alias
- CPU 是如何执行任务的
- abaqus切削为什么没有切屑_切削液降温6大绝招,肯定有一款适合你
- 树莓派3代B版板载WIFI配置
- vue和aspx判断加页面传值.txt
- 随机获取部分ListObject集合
- Atitit 数据查询法 目录 1. 数据查询语言QL (推荐)	1 1.1. Sql	1 1.2. 对象查询语言(OQL)	1 1.3. Atitit QL查询语言总结Jpql Ongl
- jquery 操作表格实例
- vscode 搭建Vue项目及引入elementUI
- 关于手心输入法配置完整自然码辅码
- 进阶篇|选购手游联运系统的注意事项有哪些?
- kodi连接远程服务器,私人影音服务器奶妈级入门篇(1)——Jellyfin for Kodi客户端设置方法...
- 【开源代码】-基于国民N32G45x系列MCU使用JLINK的RTT Viewer/logger/Client组件工具
- 悲情陨落的十大民族品牌
- C# WPF MVVM 实战 – 2.2
- 银行卡号简单的格式化显示处理(支付宝、微信绑定卡列表显示卡号)
- 浏览器使用:chrome谷歌浏览器网页截图capture+火狐浏览器的历史在哪?
热门文章
- 1046 划拳 PAT乙级(C++)
- 什么是串口服务器?串口服务器都用在哪些领域?
- 【渝粤教育】国家开放大学2019年春季 2441经济数学基础1 参考试题
- 【渝粤题库】陕西师范大学202011 微观经济学 作业 (专升本、高起本)
- 【渝粤题库】陕西师范大学164204 供应链与物流管理 作业
- 【渝粤题库】国家开放大学2021春2786初级西方经济学题目
- cd mysql 权限不够_.bash_profile权限不够_cdmysql权限不够
- c语言开发工具程序代码是什么文件,【C语言】开发工具--GCC使用入门
- ubuntu按方向键出现abcd_Ubuntu Vi方向键[A [B [C [D问题解决
- 接受拒绝采样(Acceptance-Rejection Sampling)