基本SAS证书样本:合并并进入

时间:2017-02-17 01:53:37

标签: merge sas

这个问题的正确选择是什么?为什么?感谢:

Given the SAS data set WORK.EMP_NAME:

  Name  EmpID
  ----  -----
  Jill   1864
  Jack   2121
  Joan   4698
  John   5463

Given the SAS data set WORK.EMP_DEPT:

  EmpID  Department
  -----  ----------
   2121  Accounting
   3567  Finance
   4698  Marketing 
   5463  Accounting

提交以下计划:

 data WORK.ALL;
     merge WORK.EMP_NAME(in=Emp_N) 
           WORK.EMP_DEPT(in=Emp_D);
     by Empid; 
     if (Emp_N and not Emp_D) or (Emp_D and not Emp_N);
 run;

数据集WORK.ALL中有多少观察结果 提交程序后?          A. 1          B. 2          C. 3          D. 5

1 个答案:

答案 0 :(得分:0)

  

答案将是 B.2 已经有3个变量进行了2次观察,因此新数据集 ALL 将观察到EMP_NAME或EMP_DEPT列EmpID中没有的内容。图书馆实际上是所有人的工作。

此语句确实显示合并时仅合并EmpID中公共/存在的观察。 Emp_N来自第一个数据集,Emp_D来自第二个数据集。

by Empid; 
 if (Emp_N and not Emp_D) or (Emp_D and not Emp_N); 

希望它有助于详细说明:

 title "stackoverflow merge EMP_DEPT";
data work.EMP_NAME;
input Name $ EmpID;
datalines;
Jill   1864
Jack   2121
Joan   4698
John   5463
;
run;


proc print data = work.EMP_NAME;
run;


title "stackoverflow merge EMP_DEPT";
data work.EMP_DEPT;
 input EmpID  Department $ ;
 datalines;
2121  Accounting
3567  Finance
4698  Marketing 
5463  Accounting
;
run;

proc print data = work.EMP_DEPT;
run;


*merge;

data WORK.ALL;
 merge WORK.EMP_NAME(in=Emp_N) 
       WORK.EMP_DEPT(in=Emp_D);
 by Empid; 
 if (Emp_N and not Emp_D) or (Emp_D and not Emp_N);
 run;

 proc contents data=work.ALL;

 run;

 proc print data = work.ALL;
 run;

result of merge