Sas:如果a不是b,如何合并


您可以使用以下基本语法在 SAS 中合并两个数据集,并仅返回第一个数据集中存在值的行,而不返回第二个数据集中存在值的行:

 data final_data;
  merge data1(in=a) data2(in=b);
  byID ;
  if a and not b;
run ;

此特定示例合并名为data1data2 的数据集,并仅返回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 中执行其他常见任务:

如何在SAS中进行左连接
如何在 SAS 中执行内连接
如何在 SAS 中执行外部联接

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注