통계공부/Stata

[Stata] 기본 명령어(8): drop, keep

대학원생A씨 2020. 4. 1. 09:00
728x90
반응형

지금까지 Stata 프로그램 세팅이나 데이터(혹은 변수)조작과 관련한 기본적인 명령어들을 알아보았다. 이번 포스팅에서는 기본 명령어인 drop, keep을 알아보고 stata 기본 명령어 포스팅은 마무리를 하고자 한다. 지금까지 알아본 Stata 기본 명령어에는 help, cd, set more off, sysuse, ssc install, browse, describe, list, sort, clear, exit, tab, sum, encode, decode, label, rename, gen, egen, replace, recode가 있었으며, 이 중에서 특히 tab, sum, gen/egen, replace, recode는 활용도가 높기 때문에 직접 많이 사용해보면서 익혀두는 것이 좋다. 오늘 소개할 dropkeep 역시 많이 사용하는 명령어이기 때문에, 실습을 통해 충분히 익혀두는 것을 권한다. 아래는 지금까지 소개한 기본 명령어 포스팅이 나열되어 있으니, 각각의 명령어가 궁금하신 분들은 아래 링크를 통해 개별 명령어에 대한 소개를 읽어보길 바랍니다.

 

☞ Stata 기본 명령어 포스팅 정리:

2020/03/13 - [통계 분석/Stata] - [Stata] 기본 명령어(1): help, cd, set more off, sysuse

2020/03/15 - [통계 분석/Stata] - [Stata] 기본 명령어(2): ssc install, browse, describe

2020/03/17 - [통계 분석/Stata] - [Stata] 기본 명령어(3): list, sort, clear, exit

2020/03/21 - [통계 분석/Stata] - [Stata] 기본 명령어(4): tab, sum

2020/03/23 - [통계 분석/Stata] - [Stata] 기본 명령어(5): encode, decode, label, rename

2020/03/27 - [통계 분석/Stata] - [Stata] 기본 명령어(6): gen, egen

2020/03/29 - [통계 분석/Stata] - [Stata] 기본 명령어(7): replace, recode

 


1. drop

drop 변수명: 해당 변수를 제거할 때 사용하는 명령어
drop if (조건) : 해당 조건을 충족하는 관찰값을 제거하는 명령어

drop은 변수나 일부 관찰값을 제거할 때 사용할 수 있는 명령어이다. 먼저 drop 뒤에 바로 변수명을 붙여주면 해당 변수들을 탈락시켜주는데, 한 개 이상의 변수를 나열할 수 있다. 예시를 한 번 보도록 하자. Stata에서 기본으로 제공하는 auto 데이터를 써보도록 하자. 

 

sysuse auto

 

데이터를 부르면, 왼쪽 Variables 창에 현재 데이터에 있는 변수들을 확인할 수 있다. 이 중 내가 없애고 싶은 변수가 displacement, gear_ratio, foreign이라면 다음과 같이 command를 입력해주면 된다.

 

drop displacement gear_ratio foreign 
혹은 drop displacement - foreign

 

[왼쪽]은 auto 데이터의 원래 변수명들이고, [오른쪽]은 drop command 실시 후의 결과창이다. displacement, gear_ratio, foreign 변수가 사라진 것을 확인할 수 있다.

 

변수를 제거하는 것뿐만 아니라 특정 조건을 해당하는 관찰값들을 제거할 수 있다. 예를 들어, 위에서 사용한 auto라는 데이터를 보면 rep78이라는 변수가 있는데 해당 변수에 결측값들이 있는 것을 확인할 수 있다.

tab에서 옵션으로 결측값까지 확인한 결과, 5개의 결측값이 관측되었다.

 

이 결측값들을 제거하고 싶다면 다음과 같이 command를 입력해주자.

 

drop if rep78==.

 

해당 command를 입력하면, 아래 왼쪽 사진과 같이 5개의 관측값이 제거되었다는 결과가 뜬다. 다시 한 번 위에서와 동일하게 결측값을 포함하여 빈도분포표를 제시해달라는 tab 명령어를 실행하면 아래 오른쪽 사진과 같은 결과가 나왔다. 이미 drop을 이용하여 결측값을 제거했기에, 결측값을 포함해달라고 했지만 결측값이 없어 그림과 같은 결과가 나오는 것이다.

[오른쪽] 사진은 아까와 달리 이미 drop if rep78==.을 실행한 후의 결과창이다.

 

2. keep

keep 변수명: 해당 변수를 유지할 때 사용하는 명령어
keep if (조건) : 해당 조건을 충족하는 관찰값을 유지하는 명령어

 

위의 내용을 보면 알다싶이, keep과 drop은 반대되는 명령어이다. drop은 변수나 관찰값들을 탈락시키는 명령어인 반면, keep은 변수나 관찰값들을 유지하는 명령어인 것이다. 그래서 위의 drop의 command 작성 방식과 동일하게 작성하면 되고, 다만 그 내용이 변수나 관찰값을 유지할 때 사용되는 것으로 변경된다는 것 밖에 차이가 없다.

 

앞선 예시에서 drop displacement gear_ratio foreign를 입력하면 세 개의 변수(displacement gear_ratio foreign)가 탈락된 반면, keep displacement gear_ratio foreign를 입력하면 세 개의 변수를 제외하고 다른 나머지 변수들은 탈락되고 세 개의 변수만이 살아남는다.

keep displacement gear_ratio foreign 실행결과, 3개의 변수만이 남았다.

 

마찬가지로 앞에서 사용한 drop if rep78==.은 rep78이 결측인 경우만 제거된다면 keep if rep78==.을 실행하면, rep78이 결측인 경우만 남고 나머지 데이터들을 삭제된다.

 

keep if rep78==.을 실행하면 rep78이 결측인 5개의 케이스만 살아남고 다 지워진다.

 

728x90
반응형