2014-04-09 351 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; 

希望这会有所帮助。