Sas:如果a不是b,如何合并
您可以使用以下基本语法在 SAS 中合并两个数据集,并仅返回第一个数据集中存在值的行,而不返回第二个数据集中存在值的行:
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and not b;
run ;
此特定示例合并名为data1和data2 的数据集,并仅返回data1中存在值而不是data2中存在值的行。
以下示例展示了如何在实践中使用此语法。
示例:使用 If A Not B 合并 SAS 中的两个数据集
假设我们在 SAS 中有以下两个数据集,其中包含有关公司销售人员的信息:
/*create first dataset*/
data data1;
inputIDGender $;
datalines ;
1 Male
2 Male
3 Female
4 Male
5 Female
;
run ;
title "data1";
proc print data = data1;
/*create second dataset*/
data data2;
input IDSales;
datalines ;
1 22
2 15
4 29
6 31
7 20
8 13
;
run ;
title "data2";
proc print data = data2;
如果我们使用以下合并语句根据ID列的值合并两个数据集,则将从两个数据集中返回所有行:
/*perform merge*/
data final_data;
merge data1 data2;
byID ;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
但是,我们可以使用IN语句仅返回第一个数据集中存在值的行,而不返回第二个数据集中存在值的行:
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and not b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
请注意,仅返回第一个数据集中存在值的行,而不返回第二个数据集中存在值的行。
注意:您可以在此处找到 SAS merge语句的完整文档。
其他资源
以下教程解释了如何在 SAS 中执行其他常见任务: