본문 바로가기
Stata

Stata - 변수끼리 더하기 빼기 할때 결측치(missing value)도 포함시켜서 하기

2019. 10. 2.

0이라고 코딩이 안되어 있고 결측치( . ) 로 코딩이 되어 있으면 gen  A=a+b 이런 식으로 변수 만들때 결측치 있는 것들은 다 빠져버린다.

 

여러 번수를 더하는 거라면 egen  A=rowtotal (a b c d ...) 이런 식으로 하는 방법이 있는데 더하기 빼기가 섞여있다면,

다음 두가지 방법이 있다.

 

1. cond 사용

2. 결측값을 0으로 변환 후 사용

 

1. "cond"라는 조건명령어를 넣어주는 방법이 있다.

cond의 문법은 아래와 같다.  condition;조건의 약자.

  cond ( x, a, b [,c] )

  • x 가 참이면 a 반환 ( 여기서 x 는 변수명이 올수도 있고 x>30 이런 식으로 조건을 넣을 수도 있다)
  • x 가 거짓(또는 0)이면 b 반환
  • x 가 missing 이면 c 반환 (c가 주어지지 않았고 x가 missing일 경우 a 반환)

이 cond를 사용해 더하고 빼기를 한다면 두가지 방법으로 사용할 수 있다.  

a-b 라는 두 변수의 계산의 결과를 x라는 변수로 만드는 예이다.

 (1)  gen x = cond(a, a, 0, 0)   -   cond(b,b,0,0)

     설명 : a라는 변수가 참이면(0이나 결측이 아니면) a값을 그대로 반환,  a라는 변수가 0이면 0 반환,  a가 missing이면 0반환)

 (2) gen x = cond (missing(a), 0, a)  - cond(missing(b),0,b)

    설명 : a가 missing인것이 참이면 0 반환, 그게 아니라면 a 반환

 

2.  결측치를 아얘  0으로 바꿔버린 후 사용

 

mvencode 또는  replace나 recode 를 사용해 결측치를 0으로 변환후 gen x=a-b 명령

(1) mvencode a b

(2)

replace a=0 if a==.

replace b=0 if b==.

(3) recode a b (.=0)

 

recode가 두루두루 쓰여서 편한 듯.

 

 

댓글