proc format
的一個有用的功能是能夠使用數據集來創建格式,而不是手動輸入格式。您的方案似乎是這個功能的完美場景。
在你給出的例子中,對「名稱」數據集的一些小改動將把它放在一個可以通過proc格式讀取的表單中。
例如,如果我修改名稱的數據集,像這樣..
data names;
retain fmtname "names" type "N";
input start end label $;
datalines;
1 10 John
11 20 Paul
21 30 George
31 40 Ringo
;
然後我就可以發出此命令建立一個基於它的格式。
proc format cntlin=names;run;
現在我可以像使用任何其他格式一樣使用此格式。例如,創建一個包含基於號碼進行必要的「名」新列,你可以這樣做:
data numbers;
input number;
number_formatted=put(number,names.);
datalines;
33
21
17
5
;
這裏是輸出會是什麼樣子:
number_
number formatted
33 Ringo
21 George
17 Paul
5 John
更新地址問題:
從文本文件中讀取所需的編碼沒有太大的區別。我們只需要設置它,以便輸出數據集具有proc格式所需的特定變量名稱(fmtname,type,start,end和label)。
例如,如果我有一個名爲「names」的外部逗號分隔文件。CSV」,看起來像這樣:
1,10,John
11,20,Paul
21,30,George
31,40,Ringo
然後,我只是可以更改創建的代碼‘設置名稱’數據,以便它看起來像這樣:
data names;
retain fmtname "names" type "N";
infile "<path to file>/names.csv" dsd;
input start end label $;
run;
現在我可以運行PROC格式像我的cntlin選項以前那樣:。。。。
proc format cntlin=names;run;
非常整齊非常感謝 – Murray 2011-05-23 01:37:34