SAS | 数据读入思路及代码

摘要:
目录1读入思路2读入代码1读入思路不管对数据是否熟悉,是否有数据字典,下图的读数思路都可以通用。
目录

1 读入思路

不管对数据是否熟悉,是否有数据字典,下图的读数思路都可以通用。
SAS | 数据读入思路及代码第1张

2 读入代码

*1.设置读入的记录数:全局变量,可设置为指定数字,全量读入设为max;
option obs=1000;    /* max */


*2.import语句读入;
proc import 
datafile = 'C:Users
ajinDesktop	est.csv'  /* 读入文件路径。文件格式txt、csv皆可 */
out = data-set				      /* 读入数据集名称:逻辑库名.数据集名 */
dbms = dlm replace;								
delimiter = ',';			      /* 分隔符:csv默认为(,) */
datarow = 2;				      /* 从第几行开始读入:有标题设为2,无标题设为1 */
getnames = yes;				      /* 是否获取原始数据标题 */
run;


*3.截取日志中语句再次读入;
*用import语句读入时,很可能存在字段格式不正确,长度被截断等问题,因此需要修改字段格式及长度后再次读入;
data data-set    ;
%let _EFIERR_ = 0; 			      /*set the ERROR detection macro variable*/
infile 'C:Users
ajinDocumentsX_P_LOAN_INFO.txt' delimiter = ',' missover dsd lrecl=32767 firstobs=2 ;
	informat LOAN_ID			 $36. ;		   /* 字符格式 */
	informat REPORT_NO 		 	 best32. ;	   /* 数值格式 */
	informat LOAN_START_DATE 	         yymmdd10. ;       /* 日期格式 */

	format LOAN_ID 				 $36. ;
	format REPORT_NO 			 best12. ;
	format LOAN_START_DATE 		         yymmdd10. ;

	input
		LOAN_ID   			 $     		    /* 字符格式 */
		REPORT_NO					    /* 数值格式 或 日期格式 */
		LOAN_START_DATE
	;
if _ERROR_ then call symputx('_EFIERR_',1);   /* set ERROR detection macro variable */
run;


*4.封装成宏;
*封装为名为read_cusTab1的宏,其中fp、ds、obs_count为宏参数,执行时只须给参数赋值,SAS会进行相应代码替换;
*加入了编码转换(encoding = utf8)、局部控制变量(options obs);
%macro read_cusTab1(fp, ds, obs_count);
	data &ds.;
	options obs=&obs_count.;
	%let _EFIERR_ = 0;	 	      /* set the ERROR detection macro variable */
	infile &fp. delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2 encoding = utf8;
		informat LOAN_ID			 $36. ;		  /* 字符格式 */
		informat REPORT_NO 		 	 best32. ;	  /* 数值格式 */
		informat LOAN_START_DATE 	         yymmdd10. ;      /* 日期格式 */

		format LOAN_ID 				 $36. ;
		format REPORT_NO 			 best12. ;
		format LOAN_START_DATE 		         yymmdd10. ;

		input
			LOAN_ID   		         $     		  /* 字符格式 */
			REPORT_NO				          /* 数值格式 或 日期格式 */
			LOAN_START_DATE
			load_dat
		;
	if _ERROR_ then call symputx('_EFIERR_',1);   /* set ERROR detection macro variable*/
	run;

%mend read_cusTab1;


*5.宏的调用;
*宏的调用分两种情况:本程序直接调用;在另一个程序中调用;

*5.1 本程序直接调用;
%read_cusTab1('D:datasas_filezxRAWDATAGZNS_cxrz.csv', data-set, max);

*5.2 在另一个程序中调用;
*注意:该种方式调用,被引用的宏会被完整的执行;
%include '程序路径程序名称';

*示例如下;
%include "/data/home/app/RDS/ZYH/ZX/PGM/SCNX_READ_DATA.SAS";      /* 路径+宏名称 */

%let ENV = %sysget(MACRO_CV_ENV);    			          /* 创建宏变量的套了一个宏变量 */
%INCLUDE "&ENV";						  /* 调用宏 */

免责声明:文章转载自《SAS | 数据读入思路及代码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于oracle 数据库效率的优化DotNetCore.CAP下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

U9数据权限分配枚举值方法

1、配置动态视图,定位应用对应控制实体,并设置动态视图类型:读取 或 增、删、改; 2、设置动态视图条件:MOPickList.MO.DocState.Value in (FunEnum('生产订单单据状态','开立',0),FunEnum('生产订单单据状态','核准中',4)) 3、绑定实体对应动态视图。...

WPF MVVM实现数据增删改查逻辑全流程详细解析demo

界面总览 gitee 地址:WPFMVVM: 使用mvvm模拟实现数据增删改查 (gitee.com) 本例中包含两个View 界面:MainWindow.xaml 数据列表界面,StudentView.xaml数据新增编辑界面 本例使用了命令绑定MvvmLight RelayCommand模拟数据增删改查操作,适用于WPF入门阅读 效果如下:   程序代...

Excel表格导入Mysql数据库,一行存入多条数据的前后台完整实现思路(使用mybatis框架)

现在有一张Excel表格: 存入数据库时需要这样存放: 现在需要将Excel表格做处理,将每一行拆分成多条数据存入数据库。 1.首先在前台jsp页面画一个按钮:,加入点击事件: <td style="vertical-align:top;padding-left:2px;"> <a class="btn btn-light b...

2013年8月,阿里云飞天5K集群成功上线,所有的服务对应的都是同一个系统内核、同一套分布式文件系统

IDC研究显示,包含结构化和非结构化的大数据正在以每年60%的增长率持续增长,到了2020年全球数据总量将增长44倍,达到35.2ZB。而着眼国内,2013年产生的数据总量已经超过0.8ZB,两倍于2012年,相当于2009年全球的数据总量。预计到2020年,中国产生的数据总量更可能超过8.5ZB。井喷的数据在给各个机构带来数不尽机遇和财富的同时,也在存储...

java通过jdbc连接数据库并更新数据(包括java.util.Date类型数据的更新)

一、步骤 1.获取Date实例,并通过getTime()方法获得毫秒数; 2.将获取的毫秒数存储到数据库中,注意存储类型为nvarchar(20); 3.读取数据库的毫秒数,作为Date构造方法的参数创建实例,有需要再转换时间格式。 二、代码示例 packagecom.yh.dao; importjava.sql.Connection; importja...

记一次前后端数据加密的学习

最近项目涉及到一些敏感信息,业务要求数据在传输过程中需要加密。 这里数据传输包含2中 前后端数据传输过程 与其它服务(系统)数据交互时,数据的传输过程 这里我们先简要介绍加密算法的优缺点。再通过前后端(vue、java)代码的形式,演示加密解密的demo 1.加密算法简介 参考并整理了目前比较流行的2种加密算法 1.1.RAS 非对称加密 RAS 加密...