변수를 반복했지만 병합 할 데이터 집합이 두 개 있지만 행 수가 동일하지 않습니다. SAS에서 기본 동작은 일치하지 않는 모든 행의 값을 유지하는 것입니다. 예를 들어many-to-many SAS 병합에서 일치하지 않는 경우 어떻게 유지 된 값을 누락 값으로 설정합니까?
: b
세트가 단 두을 보유하면서 여기
data a;
input i x y;
datalines;
1 1 5
1 2 6
1 3 7
1 4 8
;
run;
data b;
input i f g $;
datalines;
1 9 aa
1 8 bb
;
run;
a
셋은 변수 i
하여 네 개의 행을 갖는다. 그들은 데이터 세트에서 경기를하지 않았기 때문에
data c;
merge a b;
by i;
run;
Obs i x y f g
1 1 1 5 9 aa
2 1 2 6 8 bb
3 1 3 7 8 bb
4 1 4 8 8 bb
당신은 유지 된 변수 f
와 OBS 3 g
4의 값을 위해 그것을 볼 수 있습니다 변수 i
에 의해 전적으로 병합
이 생산 a
.
는 내가 생산하려고하면이 출력됩니다 :
Obs i x y f g
1 1 1 5 9 aa
2 1 2 6 8 bb
3 1 3 7 .
4 1 4 8 .
내가 SAS 9.4을 사용하고이 내가 무엇을 시도했다입니다 :
data c;
if _n_>1 then do;
array num{*} _numeric_;
array char{*} _character_;
call missing(of num{*});
call missing(of char{*});
end;
merge a b;
by i;
run;
내 생각은 모든위한 것입니다 첫 번째 행 다음에 모든 변수를 누락으로 설정하여 일치하는 행이 없으면 값을 덮어 쓰지 않고 누락 된 상태로 남겨두기를 원합니다. 이렇게하면 보존 된 값이 제거됩니다.
PDV에 작성되어야하며, 모든 메타 데이터는 이러한 배열을 생성하고 누락을 설정하는 것이 가능해야한다 두 번째 행으로,하지만 난이 오류가 점점 오전 :
WARNING: Defining an array with zero elements.
해결하는 방법에 어떤 제안 이 코드 또는 트릭을 수행 할 다른 코드?