2013-11-09 3 views
0

쉬운 질문입니다. 이 같은 데이터 집합이 있습니다누락 된 값에 대한 변수 유지

id mtna 
1 . 
2 . 
3 1.7 
4 . 
5 . 
6 5.2 
7 9.6 
8 . 
9 . 
10 . 

를 그리고 난 이런 걸 원하는 : 누락 된 값이있을 때

id mtna 
1 . 
2 . 
3 1.7 
4 1.7 
5 1.7 
6 5.2 
7 9.6 
8 9.6 
9 9.6 
10 9.6 

은 기본적으로 그냥 통과시키는 관찰을 유지합니다. 그래서 나는이 같은 시도 :

data check; set check; 
retain lag_mtna; 
lag_mtna=lag1(mtna); 
if mtna=. then mtna=lag_mtna; 
run; 

을하지만, 그것은 다음과 같이 밝혀 :

id mtna 
1 . 
2 . 
3 1.7 
4 1.7 
5 . 
6 5.2 
7 9.6 
8 9.6 
9 . 
10 . 

어떻게 모든 값을 유지 할 수 있습니까? 어떤 도움을 주셔서 감사합니다.

답변

0

아무쪼록 고맙습니다. 나는 그것을 간단한 방법으로 해결한다.

data check; set check; 
retain mtna_new mtna; 
if mtna ne . then mtna_new=mtna; 
run; 
+0

이 mtna을 "유지"하지 마십시오 값이 데이터 세트 "검사"에서 나왔기 때문에 효과가 없습니다. 그렇지 않으면 괜찮아. – BellevueBob

3

데이터 세트에서 오는 변수를 유지할 필요가 없습니다. 이 몇 가지 트릭을 추가,이처럼 될 수있다 :

data check; 
set check (rename=(mtna=orig_mtna)); 
retain mtna; 
mtna=coalesce(orig_mtna, mtna); 
drop orig_mtna; 
run;