2017-09-24 63 views
-2

我想合并2个不同维度的数据集。如何合并2个不同长度的数据集?

TABLE1: people 
gender name 
M raa 
F chico 
M july 
F sergio 


TABLE2: serial_numbers 
gender serial 
M 4 
F 5 

我想要的结果是

result 
gender name serial 
M raa 4 
F chico 5 
M july 4 
F sergio 5 
+0

您是否尝试过简单合并数据集? – Joe

+0

此问题不符合SO指导原则。请发布您迄今为止尝试的内容。 – Reeza

回答

2

我在这里创造的数据集来说明如何合并两个数据集:

data people; 
infile cards; 
length gender $1 
     name $10; 
input gender name; 
cards; 
M raa 
F chico 
M july 
F sergio 
; 
run; 


data serial_numbers; 
length gender $1 
     serial 8; 
infile cards; 
input gender serial; 
cards; 
M 4 
F 5 
; 
run; 

解决方法1:使用PROC SQL来执行连接。

proc sql; 
create table result as 
select a.gender, a.name, b.serial 
from people a LEFT JOIN serial_numbers b 
on a.gender=b.gender; 
quit; 

proc print data=result; 
run; 

解决方案2:使用数据步骤来合并两个数据集。这需要对数据集进行排序:

proc sort data=people; 
by gender; 
run; 

proc sort data=serial_numbers; 
by gender; 
run; 

data result; 
merge people serial_numbers; 
by gender; 
run; 

proc print data=result; 
run; 
+0

通常最好是解释一个解决方案,而不是只发布一些匿名代码行。你可以阅读[我如何写一个好的答案](https://stackoverflow.com/help/how-to-answer),还有[完全解释基于代码的答案](https://meta.stackexchange.com /问题/ 114762 /解释-entirely-%E2%80%8C%E2%80%8Bcode为主,答案) –

相关问题