2017-10-15 66 views
0

作爲較大賦值的一部分,我試圖使用SAS中的PROC IMPORT讀取不帶標題或逗號的Excel CSV文件。我不確定爲什麼CSV文件沒有逗號分隔符,但這是我給的任務。這一直是我到目前爲止的代碼:將SAS中的PROC IMPORT與不帶標題或逗號的CSV文件一起使用

data states; 
input state $ avgRain roadLength population; 
PROC IMPORT 
datafile = "C:\Users\Shane\Downloads\states1.csv" 
DBMS = CSV 
getnames = no 
REPLACE; 
run; 

當我做PROC PRINT,什麼都不會發生。當我執行PROC CONTENTS時,它告訴我只有一個觀察被解析。當我嘗試在SAS中查看錶格時,它給我一個錯誤:「此列表不支持此列表,但無法打開Works.states 「

我還附上我試圖在讀取數據的截圖。

我在做什麼錯?

FL 54.5 122391 19552860 
GA 50.7 127492 9992167 
AL 58.3 102018 4833722 
NY 41.8 114800 19651127 
MI 32.8 122284 9895622 
TX 28.9 313596 26448193 
VT 42.7 14238 626630 
OR 27.4 73479 3930065 

CSV File

+1

CSV代表「逗號分隔文件」。如果沒有逗號(或分號),則不是CSV。是不是還有其他類型的分隔符?此外,您提供的鏈接不會顯示CSV。它顯示一個Excel工作表。這沒有幫助。在文本編輯器中打開它,並向我們展示它的外觀(通過在您的文章中複製粘貼,請勿截圖) – user2877959

+0

即使文件沒有逗號分隔符,該文件也具有擴展名.csv。這正是我的教授給我們的,我不認爲他希望我們改變文件類型?我已將其複製並粘貼在原始帖子中。 –

+0

你的文件是空格/製表符分隔,在這種情況下,固定寬度。正如Tom在他的回答中指出的那樣,有幾種方法可以導入它,或者使用'data'步驟或'proc import'。 – user2877959

回答

1

看起來你寫了一個PROC IMPORT步驟的數據一步,一半的一半。

你應該只選擇一個方法

data states; 
    infile "C:\Users\Shane\Downloads\states1.csv" dsd dlm='09'x truncover ; 
    input state $ avgRain roadLength population; 
run; 

或其他。

PROC IMPORT out=states replace 
    datafile = "C:\Users\Shane\Downloads\states1.csv" 
    DBMS = dlm 
; 
    getnames = no ; 
    delimiter='09'x ; 
run; 
+0

只需要注意一下,你假設這個文件是製表符分隔的(很可能是這種情況),但它也可以是空格分隔的。如果是這種情況,那麼擺脫'dsd'選項並將'dlm'選項改爲'dlm ='''會起作用;除非某些值有時會丟失,在這種情況下,您可以在此特定示例中使用固定寬度導入。 – user2877959