日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/4 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《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 "

總結

以上是生活随笔為你收集整理的《SAS编程与数据挖掘商业案例》学习笔记之八的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。