[英]sas macro datalines sas
data macpro.bimodels_type;
infile datalines ;
input Model & $ model_class$ model_price model_frame$ DOpurchase;
*length Model$20. model_class$25. model_price4. ;
datalines;
Black Bora Track 796 Aluminum 01Aug2009
Delta Breeze Road 400 CroMoly 23Aug2010
Jet Stream Track 1160 CroMoly 01Aug2009
Mistral Road 1995 Carbon Comp 01Jul2010
Nor'easter Mountain 900 Aluminum 05Jul2010
Santa Ana Mountain 459 Aluminum 20Jul2010
Scirocco Mountain 2300 Titanium 08Sep2011
Trade Wind Road 759 Aluminum 08Sep2011
在Model
變量i中嘗試修復空白的地方,我使用了&語法,例如input Model & $
等等...但是我無法在單列中修復Black Bora
。 我該如何解決這個問題。
在SAS已經確定字符變量的長度之后,您將無法更改它的長度。 如果在其他語句中使用變量之前顯式定義變量,則可以更輕松地實現此目的。
data bimodels_type;
infile datalines truncover ;
length Model $20 model_class $25 model_price 8 model_frame $20 DOpurchase 8 ;
format DOpurchase date9. ;
input Model & model_class model_price model_frame & DOpurchase :date.;
datalines;
Black Bora Track 796 Aluminum 01Aug2009
Delta Breeze Road 400 CroMoly 23Aug2010
Jet Stream Track 1160 CroMoly 01Aug2009
Mistral Road 1995 Carbon Comp 01Jul2010
Nor'easter Mountain 900 Aluminum 05Jul2010
Santa Ana Mountain 459 Aluminum 20Jul2010
Scirocco Mountain 2300 Titanium 08Sep2011
Trade Wind Road 759 Aluminum 08Sep2011
;
為了使&
修飾符起作用,您需要在值之后和下一個值之前至少有兩個空格(實際上是定界符)。 因此,在數據中第四行將出現問題,因為日期之前沒有兩個空格。
您可以修復輸入數據。
Mistral Road 1995 Carbon Comp 01Jul2010
或者,如果您知道每條記錄都會有一個日期,則可以將其讀取為先前字符變量的一部分,然后將其取出。
data bimodels_type;
infile datalines truncover ;
length Model $20 model_class $25 model_price 8 model_frame $50 DOpurchase 8 ;
format DOpurchase date9. ;
input Model & model_class model_price model_frame $50.;
DOpurchase=input(scan(model_frame,-1,' '),date11.);
model_frame = substr(model_frame,1,length(model_frame)-9);
datalines;
Black Bora Track 796 Aluminum 01Aug2009
Delta Breeze Road 400 CroMoly 23Aug2010
Jet Stream Track 1160 CroMoly 01Aug2009
Mistral Road 1995 Carbon Comp 01Jul2010
Nor'easter Mountain 900 Aluminum 05Jul2010
Santa Ana Mountain 459 Aluminum 20Jul2010
Scirocco Mountain 2300 Titanium 08Sep2011
Trade Wind Road 759 Aluminum 08Sep2011
;
如果確實要在宏中包裝包含數據行的代碼(如標題所示),則此方法將無效。 數據線/卡是不能在宏內執行的語句。 或者,您可以將數據行保存在一個文本文件中,然后讀取該文件,該文件在宏代碼中有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.