2017-09-23 88 views
1

希望是一個容易的。 我對SAS相當陌生。如何從SAS中的流內數據讀取具有不同字符長度的變量?

我想使用下面的SAS代碼讀取數據(按照課堂筆記給出的),但由於某些字符長度問題,它不會生成正確的SAS數據集。我嘗試過:和&一些命中和試用,但無法修復它。任何人都可以解釋我怎麼解決這個問題?

data SMSA_subset_weather; 
length city $ 27; 
input city & JanTemp JulyTemp RelHum Rain; 
datalines; 
Akron, OH 27 71 59 36 
Albany-Schenectady-Troy, NY 23 72 57 35 
Baltimore, MD 35 77 55 43 
Allentown, Bethlehem, PA-NJ 29 74 54 44 
Atlanta, GA 45 79 56 47 
; 
run 
; 

enter image description here 我使用SAS ON DEMAND。當我使用DSD它給我所需要的輸出,如下圖所示:

data SMSA_subset_weather; 
infile datalines delimiter=" " dsd; 
length city $ 27; 
input city & JanTemp JulyTemp RelHum Rain; 
datalines; 
"Akron, OH" 27 71 59 36 
"Albany-Schenectady-Troy, NY" 23 72 57 35 
"Baltimore, MD" 35 77 55 43 
"Allentown, Bethlehem, PA-NJ" 29 74 54 44 
"Atlanta, GA" 45 79 56 47 
; 
run 
; 

enter image description here 我通過修改河道內數據,並使用DSD選項實現這一目標。但是,如果有更多這樣的觀察,我認爲我不能處理。

回答

1

在城市名稱或引號後面需要第二個空格。

當使用可能出現在數據中的分隔符時,可以像使用&一樣詢問SAS,直到它找到兩個連續的分隔符。所以在這裏(您也可以使用DSD選項和引號。)

data SMSA_subset_weather; 
length city $ 27; 
input city & JanTemp JulyTemp RelHum Rain; 
datalines; 
Akron, OH 27 71 59 36 
Albany-Schenectady-Troy, NY 23 72 57 35 
Baltimore, MD 35 77 55 43 
Allentown, Bethlehem, PA-NJ 29 74 54 44 
Atlanta, GA 45 79 56 47 
; 
run 
; 

或者在這裏,使用DSD加上引號:

data SMSA_subset_weather; 
length city $ 27; 
infile datalines dsd dlm=' '; 
input city JanTemp JulyTemp RelHum Rain; 
datalines; 
"Akron, OH" 27 71 59 36 
"Albany-Schenectady-Troy, NY" 23 72 57 35 
"Baltimore, MD" 35 77 55 43 
"Allentown, Bethlehem, PA-NJ" 29 74 54 44 
"Atlanta, GA" 45 79 56 47 
; 
run 
; 
+0

看起來這兩種方法(1)「 dsd「和(2)」&「工作。我在課堂筆記中認爲,空間可能已經被省略,或者我認爲這是不適合我的奇怪事情。不管怎樣,感謝喬的快速幫助。非常感激。 –

相關問題