2014-04-09 349 views
0

我剛開始使用SAS 3天前,我需要將〜50個csv文件合併爲1個SAS數據集。如何將多個csv文件合併爲1個SAS文件

50個CSV文件中有多個變量,只有1個共同的,即「REGION_ID」

變量我使用SAS Enterprise Guide中的拖放功能做到這一點,但爲時手動和我花了半天將47個csv文件上傳併合併到1個SAS文件中。

我想知道是否有人有更聰明的方式來做這個使用基礎SAS?

任何意見和提示表示讚賞!

謝謝!

實施例的文件名: 2011Census_B01_AUST_short 2011Census_B02A_AUST_short 2011Census_B02B_AUST_short 2011Census_B03_AUST_short 。 。 2011Census_xx_AUST_short

我有超過50個csv文件要上傳和合並。

csv文件中變量的數量和類型因每個csv文件而異。然而,所有CSV文件有1個公共變量= 「REGION_ID」

實例變量: REGION_ID,Tot_P_M,Tot_P_F,Tot_P_P,Age_0_4_yr_F等等

+1

首先,您應該使用PROC IMPORT語句將csv文件中的數據導入SAS數據集。 然後使用MERGE語句合併它們。 –

+0

什麼是文件名?如果它們相似,我們可以使用SAS MACRO – mjsqu

+0

請提供一些示例文件名和文件內容,我們將能夠更好地爲您提供幫助。 @andrey_sz可以在一個步驟中將多個CSV導入到一個SAS數據集中。因此,首先將每個數據導入自己的數據集是一種有效的方法,但可能並非必要。 –

回答

0

首先,我們需要一個自動化的方式來導入。下面的簡單宏將文件的位置和文件的名稱作爲輸入,並將數據集輸出到工作目錄。 (我會使用Excel中的連接函數來創建SAS代碼50次)。此外,我們正在對它進行排序,以便稍後更容易合併。

%macro importcsv(location=,filename=); 
proc import datafile="&location./&filename..csv" 
    out=&filename. 
    dbms=csv 
    replace; 
    getnames=yes; 
run; 
proc sort data= &filename.; by region_id; run; 
%mend; 
%importcsv(location = C:/Desktop,filename = 2011Census_B01_AUST_short) 
. 
. 
. 

然後再簡單地將所有數據合併在一起。我只是因爲我不想正確使用50次而添加了省略號。

data merged; 
merge dataseta datasetb datasetc ... datasetax; 
by region_id; 
run; 

希望這會有所幫助。