《SAS编程与数据挖掘商业案例》学习笔记之八

十:file语句

file中的option选项:

Dlm=              指定列表输出文件的分隔符,默认是空格

Dropover      规定当输出数据行长度超过指定值时,忽略超出部分

Flowover    规定当输出数据行长度超过指定值时,超过部分在下一行输出

Dsd   规定一个数据项可以包含分隔符,但是要用引号括住  默认分隔符是逗号

Encoding=  指定输出外部文件所用编码

Filename=   定义一个临时变量,用于接收put语句打开的文件名,默认长度为8

Filevar=    定义一个临时变量,file语句根据其值变化关闭当前输出文件并在下一次file语句执行时打开新的输出文件,长与input语句连用

Lrecl=   输出文件的逻辑记录长度

Mod  把输出行输出到文件中已经存在的行的后面

Old      替换文件原有的内容

eg:

filename file ‘f:\data_model\book_data\chapt3\utf.txt‘;

data _null_;

set sashelp.class;

file file encoding=‘utf-8‘;

put name weight;

run;

file语句最简单的形式,输出两个变量到新的文件中

eg2:

filename files ‘f:\data_model\book_data\chapt3\filename.txt‘;

data a;

length temp $50;

file files filename=temp;

put ‘abc‘;

fname=temp;

run;

输出两个文件,一个是sas数据集a,一个是文件文件filename.txt

其中数据集a中只有fname一个字段,其值为filename对应的文件名

put语句后面的内容为输出文件的内容,所以数据filename.txt中只有abc,

eg:

data b;

length name $200;

input name;

name=‘f:\data_model\book_data\chapt3\‘||strip(_infile_)||‘.txt‘;

file anyname filevar=name ;

date=date();

n=name;

format date yymmdd10.;

do;

put ‘test‘ @;

put ‘,‘ @;

put date ;

end;

cards;

test_file1

test_file2

test_file3

;

run;

解读:通过filevar选项的控制同时输出多个外部文件,并把外部文件名输出给sas数据集

蓝色部分为数据集b 的内容,黄色部分中put语句后面的为三个文件输出的内容;

cards读入数据后,自动变量_infile_都会自动获取相应的值,第一条记录读取时,test_file1被传送到_infile_变量中,从而filevar变量的值为f:\data_model\book_data\chapt3\test_file1.txt,然后赋值给n

如果仅仅是读取某一目录下所有外部文件名到另一个文本文件下,只需要如下代码。

data _null_;

do i=1 to 3;

length name $200;

name=‘f:\data_model\book_data\chapt3\‘||‘test_file‘||put(i,1.)||‘.txt‘;

file anyname filevar=name ;

file ‘f:\data_model\book_data\chapt3\fname.txt‘;

put name;

end ;

run;

商业实战:

输出定长文本文件

data _null_;

set sashelp.class(keep=name sex) nobs=obs end=last;

date=date();

file "f:\data_model\book_data\chapt3\test1.txt"  dropover lrecl=32767 ;

if _n_=1 then

do;

put ‘header‘  @;

put date @;        format date yymmdd10.;

put obs z8.;

end;

do;

put name $ 1-10 @;

put sex $ 15-16 ;

;

end;

if last then do;

put ‘end‘;

end;

run;

集中输出方式:

列方式输出:在put语句后要紧跟列号,对字符型要加$,如put
name $1-8

列表方式输出(自由格式):只是在put语句后列出变量名,当然字符型要外加$,如put
name $ age

格式化方式输出:在put语句后要指明输出格式,输出格式同事指明数据类型和列宽度,最后要加一个句点结尾。

如put name  $8. age  4.

输出含有逗号不定长文本文件:

libname chapt3 ‘f:\data_model\book_data\chapt3‘;

data _null_;

set chapt3.file_put1;

file "f:\data_model\book_data\chapt3\test2.txt"  dropover lrecl=32767 dsd dlm=",";

do;

put firstname  @;

put id  @;

put phonenumber ;

end;

run;

输出定长且含有逗号的文本文件

data _null_;

set chapt3.file_put2;

file "f:\data_model\book_data\chapt3\test2.txt" dropover lrecl=32767 ;

do;

put firstname $10. @;

put "," @;

put id $3. @;

put "

时间: 2024-12-29 07:55:20

《SAS编程与数据挖掘商业案例》学习笔记之八的相关文章

《SAS编程和数据挖掘商业案例》学习笔记# 19

继续<SAS编程与数据挖掘商业案例>学习笔记,本文側重数据处理实践.包含:HASH对象.自己定义format.以及功能强大的正則表達式 一:HASH对象 Hash对象又称散列表,是依据关键码值而直接进行訪问的数据结构.是依据关键码值而直接进行訪问的数据结构. sas提供了两个类来处理哈希表.用于存储数据的hash和用于遍历的hiter,hash类提供了查找.加入.改动.删除等方法,hiter提供了用于定位和遍历的first.next等方法. 长处:键值的查找是在内存中进行的,有利于提高性能:

《SAS编程与数据挖掘商业案例》学习笔记之十九

继续<SAS编程与数据挖掘商业案例>学习笔记,本文侧重数据处理实践,包括:HASH对象.自定义format.以及功能强大的正则表达式 一:HASH对象 Hash对象又称散列表,是根据关键码值而直接进行访问的数据结构,是根据关键码值而直接进行访问的数据结构, sas提供了两个类来处理哈希表,用于存储数据的hash和用于遍历的hiter,hash类提供了查找.添加.修改.删除等方法,hiter提供了用于定位和遍历的first.next等方法. 优点:键值的查找是在内存中进行的,有利于提高性能: h

《SAS编程与数据挖掘商业案例》学习笔记之十六

<SAS编程与数据挖掘商业案例>学习笔记,本次重点:sas宏变量 内容包含:宏变量.宏函数.宏參数.通配函数.字符函数.计算函数.引用函数.宏语句.宏应用 1.宏触发器: %name-token:是一个宏语句或宏函数 &name-token:是一个宏变量引用 宏变量不依赖于sas数据集,能够在不论什么一个除数据行以外的地方定义和引用宏变量,一般定义的宏变量为局部变量,除非使用%global,定义宏变量用%let,显示宏变量用%put,调用宏变量用&. eg: %let a=xx

《SAS编程与数据挖掘商业案例》学习笔记之十五

继续<SAS编程与数据挖掘商业案例>读书笔记,本次重点:输出控制 主要内容包括:log窗口输出控制.output窗口输出控制.ods输出控制 1.log窗口输出控制 将日志输出到外部文件 proc printto log= "f:\data_model\book_data\chapt9\newlog.txt"; new; proc print data=sashelp.class; proc printto;run; 2.output窗口输出控制 输出sas数据集到外部文件

《SAS编程与数据挖掘商业案例》学习笔记之十八

接着以前的<SAS编程与数据挖掘商业案例>,之前全是sas的基础知识,现在开始进入数据挖掘方面笔记,本文主要介绍数据挖掘基本流程以及应用方向,并以logistic回归为例说明. 一:数据挖掘综述 衡量一个数据挖掘模型价值的唯一标准就是商业目标,为达到一个商业目标,有很多种方法,只有高效解决商业目标的方法才是最牛的方法,即使是看似简单的方法,只要能高效解决商业目标,我们就认为是牛的方法: 面对海量的数据,即使是使用了最先进的工具,最复杂的算法,但是如果挖掘出来的知识是无用的,或者挖掘的结果是无法

《SAS编程与数据挖掘商业案例》学习笔记之十

继续之前的读书笔记,本次讲解sas主要的变量操作,包括基本赋值语句.累加语句.keep语句.retain语句.array语句.rename语句.length语句. 1.基本赋值语句 z=x y; z=sum(x,y);  sum函数的好处是可以克服缺失值的影响: 2.如果表达式中既有数值型变量又有字符型变量的话,则会将字符型变量转化为数值型变量 3.系统在编译阶段,对于赋值语句变量,如果是字符型变量则长度为1,如果是数值型变量则长度为8,接下来,系统将执行赋值语句,这时变量长度将由第一次读入的表

《SAS编程与数据挖掘商业案例》学习笔记之十七

继续读书笔记,本次重点sas sql语句,由于sql内容多且复杂,本文只介绍商业应用中常用的并且容易出错的地方,内容包括:单表操作.多表关联.子查询以及merge和join的区别 1.单表操作 eg1: Proc sql outobs=10: *可选项,功能类似于data步中的obs数据集选项 create table class as Select  name, case when sex eq 'M' then "1" when sex eq 'F'  then "2&q

《SAS编程与数据挖掘商业案例》学习笔记之十一

继续读书笔记,本文重点側重sas观測值的操作方面, 主要包含:输出观測值.更新观測值.删除观測值.停止输出观測值等 1.output语句   输出当前在pdv中的观測值,继续无条件运行以下的语句. 注意:简单的data步不须要output语句.run语句会自己主动输出pdv中的数据到数据集,并返回data步开头继续运行下一条观測. 在有output语句和run语句同一时候存在时.pdv仅仅会运行output的结果到正在被创建的数据集.而运行run语句的结果是pdv会清空全部的变量值为缺失值 da

《SAS编程与数据挖掘商业案例》学习笔记之十三

本次重点:data步循环与控制 涉及:if/then/else语句,select语句,do语句,continue语句,leave语句 1.if then else 语句 高效率的if应用: 1) If  x=1 then y=1; Else if x=2  then y=2; Else y=3; 对于每一个数据集的观测,if-then-else只会判断一次,为真则执行 2) If status=1 then If status=5 then If status=9 then output; 高效