2017-09-08 69 views
1

我是SAS的新手,並且無法導入CSV文件。該信息在以下佈局:SAS Infile不讀取任何數據行

aircraft,duration,no_pasg,speed_ground,speed_air,height,pitch,distance 
boeing,98.4790912,53,107.91568,109.3283765,27.41892425,4.043514571,3369.836364 
boeing,125.7332973,69,101.6555886,102.8514051,27.80471618,4.117431699,2987.803924 
boeing,112.0170008,61,71.05196088,,18.58938573,4.434043129,1144.922426 

我運行下面的代碼,我得到0意見(不預期)和8個變量(預期)。我究竟做錯了什麼?我什至試圖把firstob = 2跳過第一行包含標題,但沒有幫助

我很感激幫助。

DATA FAA_DATA1; 
INFILE '~/Project/Data/FAA1.csv' dsd dlm=',' firstobs=2; 
INPUT aircraft $ duration no_pasg speed_ground speed_air height pitch distance; 
RUN; 
PROC PRINT; 
RUN; 
+0

在日誌中應該有一個註釋,說明從文件中讀取的SAS數量。聽起來好像它沒有看到行尾字符,所以認爲你的文件是一條龍線。這可以解釋爲什麼FIRSTOBS = 2會導致您獲得0個觀測值。嘗試在INFILE語句中使用TERMSTR =選項。如果你在Mac上使用Excel創建文件,那麼你應該嘗試使用TERMSTR = CR。 – Tom

回答

1

聽起來像它沒有看到行尾字符,所以認爲你的文件是一條長長的行。這可以解釋爲什麼FIRSTOBS = 2會導致您獲得0個觀測值。日誌中應該有一個註釋,說明從文件中讀取的SAS數量。

嘗試在INFILE語句中使用TERMSTR =選項。 Unix的正常結束行是TERMSTR = LF。 Windows的正常行結束符是TERMSTR = CRLF。如果你在Mac上使用Excel製作文件,那麼你應該嘗試使用TERMSTR = CR。

對於Mac上的一些原因,Excel中仍然認爲的Mac OS使用CR作爲結束行的字符的文本儘管蘋果轉換的Mac OS要利用前幾年的Unix文件。在保存文件時,在Excel中也應該有一個選項,以將其保存爲逗號分隔符,但使用正常的行尾字符。

+0

這很好,謝謝!我很困惑,因爲我有一個類似的文件,在使用之前我沒有保存在我的Mac上,我不必使用TERMSTR選項,您的答案解釋了原因。奇怪。謝謝! – William