您的位置:58编程 > sas合并数据集merge SAS合并数据集

sas合并数据集merge SAS合并数据集

2023-03-17 00:33 SAS教程

sas合并数据集merge SAS合并数据集

sas合并数据集merge

SAS的合并数据集merge是一种常用的数据处理方法,它可以将两个或多个数据集中的记录合并到一个新的数据集中。它可以将不同来源的数据进行组合,从而使用户能够获得所需要的信息。

SAS中merge语句有三种形式:merge、update和match-merge。Merge语句用于将两个或多个数据集中的记录合并到一个新的数据集中;Update语句用于将一个数据集中的记录和另一个数据集中相应记录进行匹配,然后根据匹配情况对原始数据进行修正;Match-Merge语句是Merge和Update语句的结合体,它既能够将不同来源的资料进行组合,也能够根据匹配情况对原始资料进行修正。

 
data new_data; 
    merge data1 data2; 
    by var1; 
run; 
 
data data1; 
    update data2 data1; 
    by var1; 
run;  
  
data new_data;  
    match-merge data1 data2;  
    by var1;  
run;  																     

SAS合并数据集

可以基于特定的公共变量合并多个SAS数据集以给出单个数据集。 这是使用MERGE语句和BY语句完成的。 合并数据集中的观察的总数通常小于原始数据集中的观察的数量的总和。 这是因为当公共变量的值存在匹配时,变量形成两个数据集合被合并为一个记录。

下面给出了合并数据集的两个先决条件:

  • 输入数据集必须至少有一个要合并的公用变量。
  • 输入数据集必须按照将用于合并的公共变量排序。

语法

SAS中的MERGE和BY语句的基本语法是:

MERGE Data-Set 1 Data-Set 2
BY Common Variable

以下是所使用的参数的说明:

  • Data-set1Data-set2是一个接一个写入的数据集名称。
  • 公共变量是基于其匹配值的数据集合将被合并的变量。

数据合并的例子

考虑两个SAS数据集,一个包含具有名称和工资的雇员ID,另一个包含具有雇员ID和部门的雇员ID。 在这种情况下,为了获得每个员工的完整信息,我们可以合并这两个数据集。 最终数据集仍将对每个员工有一个观察值,但它将包含薪水和部门变量。

# Data set 1	
ID NAME SALARY	
1 Rick 623.3		 
2 Dan 515.2 		
3 Mike 611.5 		
4 Ryan 729.1 
5 Gary 843.25 
6 Tusar 578.6 
7 Pranab 632.8 
8 Rasmi 722.5 

# Data set 2
ID DEPT
1 IT 
2 OPS
3 IT 
4 HR 
5 FIN 
6 IT 
7 OPS
8 FIN 

# Merged data set
ID NAME SALARY DEPT	
1 Rick 623.3	IT 		 
2 Dan 515.2 	OPS	
3 Mike 611.5 	IT 	
4 Ryan 729.1    HR 
5 Gary 843.25   FIN 
6 Tusar 578.6   IT 
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN 

上述结果通过使用以下代码实现,其中在BY语句中使用公共变量(ID)。 请注意,两个数据集中的观测值已在ID列中排序。

DATA SALARY; 
  INPUT empid name $ salary  ; 
DATALINES; 
1 Rick 623.3		 
2 Dan 515.2 		
3 Mike 611.5 		
4 Ryan 729.1 
5 Gary 843.25 
6 Tusar 578.6 
7 Pranab 632.8 
8 Rasmi 722.5 
;
RUN; 
DATA DEPT; 
  INPUT empid dEPT $ ; 
DATALINES; 
1 IT 
2 OPS
3 IT 
4 HR 
5 FIN 
6 IT 
7 OPS
8 FIN 
;
RUN; 
DATA All_details;
MERGE SALARY DEPT;
BY (empid);
RUN;
PROC PRINT DATA=All_details; 
RUN;  

匹配列中缺少值

可能存在公共变量的一些值在数据集之间不匹配的情况。 在这种情况下,数据集仍然会合并,但在结果中给出缺失值。

考虑数据集工资中缺少员工ID:3的情况,以及员工ID:6缺少表单数据集DEPT。 当应用上述代码时,得到以下结果。

ID NAME SALARY DEPT	
1 Rick 623.3	IT 		 
2 Dan 515.2 	OPS	
3 .		.		IT
4 Ryan 729.1    HR 
5 Gary 843.25   FIN 
6 Tusar 578.6   .
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN 

仅合并匹配项

为了避免结果中的缺失值,我们可以考虑仅保留具有公共变量的匹配值的观察值。 这是通过使用IN语句实现的。 SAS程序的merge语句需要更改。

在下面的示例中,IN =值仅保留来自数据集SALARY和DEPT的值匹配的观察值。

DATA All_details;
MERGE SALARY(IN=a) DEPT(IN=b);
BY (empid);
IF a=1 and b=1;
RUN;
PROC PRINT DATA=All_details; 
RUN;  

在执行具有上述改变的部分的SAS程序时,我们得到以下输出。

1 Rick 623.3	IT 		 
2 Dan 515.2 	OPS	
4 Ryan 729.1    HR 
5 Gary 843.25   FIN 
7 Pranab 632.8  OPS
8 Rasmi 722.5   FIN 

阅读全文
以上是58编程为你收集整理的sas合并数据集merge SAS合并数据集全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 58编程 58biancheng.com 版权所有 联系我们
桂ICP备12005667号-32 Powered by CMS