2014-09-25 133 views
0

我沒有SAS的工作知識,但我有一個需要導入和使用的excel文件。在excel文件中有大約100行(觀察值)和7列(數量)。在某些情況下,某個特定的觀察可能沒有任何一列中的數據。在將數據讀入SAS時,我需要完全忽略這一觀察。我想知道這是什麼命令。IGNORE SAS數據導入EXCEL

一個明顯便宜的解決方案是刪除excel文件中缺少數據的行,但我想用SAS命令來做這件事,因爲我想學習一些SAS。

謝謝!

回答

1

如果您有「授權給PC文件的SAS/ACCESS接口」(提示:proc setinit),則可以使用此代碼導入Excel文件。在這裏選項讓你選擇你想要的行保留,在這個例子中,你將保持行,其中列「名」不爲空:

proc import 
    DATAFILE="your file.xlsx" 
    DBMS=XLSX 
    OUT=resulttabel(where=(name ne "")) 
    REPLACE; 
    MIXED=YES; 
QUIT; 
+1

由於'IMPORT'不是一個交互式程序,因此該步驟應該以'RUN'而不是'QUIT'來終止。 – 2014-11-17 22:23:42

3

導入不過你想要的數據,例如與IMPORT程序,如Stig Eide所述。

proc import 
    datafile = 'C:\...\file.xlsx' 
    dbms = xlsx 
    out = xldata 
    replace; 
    mixed = YES; 
    getnames = YES; 
run; 

說明:

  • 的DBMS =選項指定SAS將如何嘗試讀取數據。如果您的文件是Excel 2007+文件,即xlsx,那麼您可以使用DBMS = XLSX,如下所示。如果您的文件較舊,例如xls而不是xlsx,請嘗試DBMS = EXCEL。
  • OUT =選項命名輸出數據集。
    • 如果指定了單個級別名稱,則將數據集寫入WORK庫。這是每個SAS會話都獨有的臨時庫。它會在會話結束時被刪除。
    • 要創建永久數據集,請指定兩級名稱,如mylib.xldata,其中mylib指的是使用LIBNAME語句創建的SAS庫引用(libref)。
  • REPLACE替換第一次運行此步驟時創建的數據集。
  • MIXED = YES告訴SAS數據可能是混合類型。
  • GETNAMES = YES會根據Excel中的列名稱命名您的SAS數據集變量。

如果我理解正確的話,你想刪除每一個觀察值在具有在七列的任何缺失值的數據集。有發燒友方法可以做到這一點,但我推薦一個簡單的方法是這樣的:

data xldata; 
    set xldata; 
    where cmiss(col1, col2, ..., col7) = 0; 
run; 

的CMISS函數計算遺漏值在你每個觀察指定變量的數量,而不管數據類型。由於我們使用的是WHERE CMISS()= 0,所以得到的數據集將只包含沒有任何七列中任何一個缺失數據的記錄。

如有疑問,請嘗試瀏覽SAS online documentation。這是非常徹底的。