Sas:如何在合并语句中使用 (in=a)


在 SAS 中合并两个数据集时,可以使用IN语句仅返回特定数据集中存在某个值的行。

以下是在实践中使用IN语句的一些常见方法:

方法 1:返回第一个数据集中存在值的行(in=a)

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

此特定示例合并名为data1data2 的数据集,并仅返回data1中存在值的行。

方法 2:返回第二个数据集中存在值的行(in=b)

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

此特定示例合并名为data1data2 的数据集,并仅返回data2中存在值的行。

方法 3:返回数据集中 (in=a) 和 (in=b) 中都存在值的行

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

此特定示例合并名为data1data2 的数据集,并仅返回data1data2存在值的行。

以下示例展示了如何在实践中使用以下两个数据集的每种方法:

 /*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; 

示例 1:返回所有行

我们可以使用以下不带任何IN语句的合并语句来根据ID列值合并两个数据集并返回两个数据集中的所有行:

 /*perform merge*/
data final_data;
  merge data1 data2;
  byID ;
run ;

/*view results*/
title "final_data";
proc print data =final_data;

请注意,即使由于两个数据集中不存在 ID 值而导致值丢失,两个数据集中的所有行都会返回。

示例 2:返回第一个数据集中存在值的行 (in = a)

我们可以使用以下带有(in=a)合并语句来根据ID列中的值合并两个数据集,并仅返回第一个数据集中存在值的行:

 /*perform merge*/
data final_data;
  merge data1 (in = a) data2;
  byID ;
  if a;
run ;

/*view results*/
title "final_data";
proc print data =final_data;

请注意,仅返回第一个数据集中存在值的行。

示例 3:返回第二个数据集中存在值的行 (in=b)

我们可以使用以下带有(in=b)合并语句来根据ID列中的值合并两个数据集,并仅返回第二个数据集中存在值的行:

 /*perform merge*/
data final_data;
  merge data1 data2(in=b);
  byID ;
  if b;
run ;

/*view results*/
title "final_data";
proc print data =final_data;

请注意,仅返回第二个数据集中存在值的行。

示例 4:返回数据集中 (in = a) 和 (in = b) 中都存在该值的行

我们可以使用以下带有(in=a)(in=b)合并语句,根据ID列中的值合并两个数据集,并仅返回两个数据集中都存在值的行:

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

/*view results*/
title "final_data";
proc print data =final_data;

请注意,仅返回两个数据集中都存在值的行。

注意:您可以在此处找到 SAS merge语句的完整文档。

其他资源

以下教程解释了如何在 SAS 中执行其他常见任务:

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

添加评论

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