如何在 sas 中使用 in= 选项


您可以使用 SAS 中的IN=选项创建一个布尔变量,指示当前观测值是否来自输入数据集。

当您将两个数据集添加在一起并想知道结果数据集中的特定行是否来自特定输入数据集之一时,通常会使用IN=选项。

以下示例展示了如何在实践中使用IN=选项。

示例:如何在 SAS 中使用 IN= 选项

假设我们有两个数据集,其中包含 NBA 东部和西部联盟篮球运动员的信息:

 /*create East dataset*/
data east_data;
    input team $points;
    datalines ;
Celtics 22
Pistons 14
Nets 35
Hornets 19
Magic 22
;
run ;

/*create West dataset*/
data west_data;
    input team $points;
    datalines ;
Mavs 40
Rockets 39
Warriors 23
Lakers 19
Clippers 25
;
run ;

/*view datasets*/
proc print data =east_data;
proc print data =west_data;

我们可以使用以下语法创建一个添加这两个数据集的新数据集:

 /*create new dataset*/
data all_data;
    set east_data west_data;
run ;

/*view new dataset*/
proc print data =all_data; 

请注意,每个数据集中的每一行都属于新数据集。

要找出每行来自哪个数据集,我们可以使用IN=选项,如下所示:

 /*create new dataset*/
data all_data;
    set east_data west_data( in =i);
    if i then conf='West';
    else conf='East';
run ;

/*view new dataset*/
proc print data =all_data; 

使用IN=选项,我们可以创建一个名为conf的新列,如果该行来自名为east_data的数据集,则该列采用值“East”;如果该行来自名为 east_data 的数据集,则该列采用值“West”。名为ouest_data 的数据。

请注意,我们还可以仅使用IF语句而不使用ELSE语句来创建一个新列,如果该行来自名为east_data的数据集,则该新列仅采用值 * :

 /*create new dataset*/
data all_data;
    set east_data( in =i) west_data;
    if i then east_conf='*';
run ;

/*view new dataset*/
proc print data =all_data; 

使用IN=选项,我们可以创建一个名为east_conf的新列,如果该行来自名为east_data的数据集,则该列取值* ;如果该行来自名为west_data的数据集,则不取任何值。

其他资源

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

如何在 SAS 中使用 NOT EQUAL 运算符
如何在 SAS 中使用“NOT IN”运算符
SAS中如果A不是B如何合并

添加评论

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