2017-07-09 28 views
0

我的csv文件sales.csv有8個變量SAS在從csv讀取數據時如何識別觀察結束?

的Employee_ID,名字,姓氏,性別,工資,JOB_TITLE,國家和Emp_Hire_Date

我的代碼是這樣的:

%let path = /folders/myfolders/ecprg193; 
data work.sales1; 
    infile "&path/sales.csv" dlm=','; 
    input Employee_ID First_Name $ 
     Last_Name $ Gender $ Salary 
     Job_Title $ Country $; 
run; 

它基本上是從csv文件創建數據集sales1。

在代碼中,你可以看到我已經指定了國家變量。 我的問題是,當創建數據集work.sales1如何SAS跳過CS​​V中的僱傭數據

讓我知道是否需要更多的信息來回答這個問題。

+0

你可以顯示一些數據文件的示例行嗎?另外,當您運行程序時,SAS是否會生成任何錯誤消息? – Tom

+0

SAS沒有給出任何錯誤消息我已檢查日誌。 從輸入文件複製的前2行的文本sales.csv ..... 120102,Tom,Zhou,M,108255,銷售經理,AU,11AUG1973 120103,Wilson,Dawes,M,87975,Sales經理,澳大利亞,22JAN1953 ..... –

回答

0

從你的描述中你的文件每行有8個字段,你的程序每行只讀取7個變量。所以它跳過最後一個字段,因爲你從來沒有讀過它。

默認情況下,SAS將預期可變長度記錄由操作系統的正常行尾字符分隔。它看起來像你在Unix上運行SAS的路徑,所以默認的行尾將只是換行字符('0A'x)。如果您在PC上創建了該文件,那麼很可能實際上是使用回車和換行兩個字節序列('0D0A'x)作爲行尾創建的。通過將TERMSTR=選項添加到INFILE聲明中,您可以告訴SAS要使用哪一個。因此,如果您正在閱讀Unix上的PC/Windows文件,請添加termstr=CRLF

+0

是換行字符是每行的定界符根據您的觀察。事實上,你的答案是準確而準確的,謝謝:) –

+0

另外一件事,如果你能看到infile語句,我只爲每個變量的值指定了分隔符(,)而不是行/觀察結束。因此默認情況下('0A'x)是觀察分隔符。如果我想明確指定觀察分隔符,那麼可以告訴我更多關於這個,如何添加一個? –