這聽起來像你需要使用數據的步驟在您的CSV閱讀。有很多論文解釋如何做到這一點,所以我不會在這裏介紹。這將允許您爲每個字段指定格式(數字/字符)。這裏的好處是你已經知道他們需要的格式(來自你現有的數據集),所以你可以很容易地創建這個讀取。
比方說,你的數據是這樣:
data have;
informat x date9.;
input x y z $;
datalines;
10JAN2010 1 Base
11JAN2010 4 City
12JAN2010 8 State
;;;;
run;
現在,如果你有相同格式的CSV,您可以從上面的數據集生成的輸入碼讀取它。您可以使用PROC CONTENTS
來執行此操作,也可以使用與PROC CONTENTS
具有相同信息的dictionary.tables
來生成它。
proc sql;
select catx(' ',name,ifc(type='char', '$' ,' '))into :inputlist
separated by ' '
from dictionary.columns
where libname='WORK' and memname='HAVE';
select catx(' ',name,informat) into :informatlist separated by ' '
from dictionary.columns
where libname='WORK' and memname='HAVE'
and not missing(informat);
quit;
以上是兩個例子;他們可能會或可能不會滿足您的特定需求。
然後你使用它們像這樣:
data want;
infile datalines dlm=',';
informat &informatlist.;
input &inputlist.;
datalines;
13JAN2010,9,REGION
;;;;
run;
(很明顯,你會用你的CSV文件而不是datalines,這裏只是作爲例子)。
問題是您可以使用原始數據集中的元數據編寫數據步驟代碼。
來源
2014-06-12 05:31:24
Joe
謝謝喬。使用元數據的數據步驟是我想我錯過的。 – user3731952