2017-02-17 7 views
0

この問題の正しい選択とは何ですか?ありがとう:Base 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 

次のプログラムが送信されます。データのプログラムを提出した後WORK.ALL に設定されている

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; 

どのように多くの観測? A. 1 B. 2 C. 3 D. 5

答えて

0

回答はすでに3つの変数を持つB.2 2の観測、その新しいデータセットALLはどちらもないではないどのような見解を持つことになりますでしょうEMP_NAMEまたはEMP_DEPT列のEmpIDにあります。図書館は実際にはすべての人にとって働いています。

この文は、ないマージするときのEmpIDに共通する/存在しているだけの観測をマージすることを示しています。 Emp_Nは最初のデータセットからのものであり、Emp_Dは2番目のデータセットからのものです。

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

+0

かの句によって上書きされますか?ありがとう。 – yuewu008

+0

sasの上から下への読込 – sb0709

+0

BY文の後には、サブセットIF文があります。したがって、_subsetting IF文を満たす観測値のみが出力データセットに書き込まれます。 – GeekExplorer