tabulate & generate() STATA를 통해 가장 쉽게 더미 변수를 생성하는 방법은 tabulate과 generate command를 사용하는 것입니다. tabulate 기존변수명, generate(더미변수명) list 을 실행시키면 기존 변수에서의 관측치의 갯수에 따라 더미변수명1, 더미변수명2, 더미변수명3...라는 변수가 자동으로 생성됩니다. xi: i. xi command 역시 쉽게 더미 변수를 생성하도록 해줍니다. ‘i.*’는 xi 와 같이 쓰이면 ‘i.’ 뒤에 나오는 범주형 변수로 인식하고 더미 변수를 자동으로 생성해주는 역할을 하게 됩니다. xi i.group xi: reg wage_hourly age c.age#c.age i.w2edu 한편, 두번째 예와 같이 더미변수로 regression을 할 때에는 이렇게 생성된 (더미변수의 수-1)의 변수가 regression에 들어갑니다. generate 그러나 이렇게 범주가 나뉘어지지 않은 자료에 대하여 일정한 조건 하에 더미변수를 생성해야 할 때도 있습니다. 예컨대 25세를 기준으로 young한지 아닌지에 대한 더미를 생성한다고 합시다. gen young = 0 replace young = 1 if age<25 replace young = . if missing(age) gen young = (age<25) if !missing(age) 두번째 command의 경우, age<25이라는 조건이 맞으면 1, 그렇지 않으면 0을 부여합니다. 그리고 결측값에 대해서는 이를 0으로 처리하지 않도록 확인합니다. STATA는 결측값을 무한대로 처리합니다. !missing(x)는 해당 값이 결측값이 아니라는 것을 나타냅니다.
egen 새 변수를 생성하는 명령어 generate 확장 버전 ■ 명령어 구조 egen [type] newvar = fcn(arguments) [if] [in] [, options] egen [타입] 새 변수명 = 함수(인자) [if] [in] [, 옵션] * 대화창 실행은 명령문창에 db egen 입력
■ egen 전용 함수(fcn( )) 분류 'fcn( )'은 egen 전용 함수를 뜻하며, 함수에 따라 괄호 안의 값은 표현식, 변수리스트, 숫자리스트를 넣을 수 있습니다. egen 함수를 주제별로 분류해서 설명합니다.(내용을 클릭하면 해당 게시글로 이동합니다) Part 1. 요약 통계량 변수 생성 Part 2. 패턴을 사용한 변수 생성 Part 3. 관측치 간 일치여부를 표시한 변수 생성 Part 4. 순위를 표시한 변수 생성 Part 5. 표준화된 변수 생성 Part 6. 가로 방향 함수를 사용한 변수 생성 Part 7. 범주형 및 정수형 변수 생성(현재게시글) Part 8. 문자변수 생성 * egen 함수에 대한 더 자세한 내용은 help 명령어를 통해 확인하세요. Part 7. 범주형 및 정수형 변수 생성 7-1. anyvalue: 변수값이 지정한 정수형 숫자범위에 해당되면 자신의 값을 선택하고, 그렇지 않으면 결측으로 처리하는 함수 anyvalue(변수명), values(정수형 숫자범위) * 변수명 하나만 입력 가능 ① 숫자범위는 정수만 가능 * 예제 명령문은 Do파일 편집기에서 실행하세요. use https://www.stata-press.com/data/r17/auto, clear keep rep78 // 지정된 변수만 남김 egen anyvalue = anyvalue(rep78), values(3/5) // rep78값이 3~5사이의 정수에 해당되면 추출하고, 그렇지 않으면 결측치를 생성 // values(3/5)를 values(3 4 5)로 입력 가능 list in 11/20 // 모든 변수의 11~20번째 값 보기
<실행 결과> ▶ 대화창 이용 방법 - 예제: egen anyvalue = anyvalue(rep78), values(3/5)
▶ 참고사항! generate 명령어에 inlist( )를 사용하여, 위와 동일한 값을 만들 수 있습니다. generate anyvalue = rep78 if inlist(rep78,3,4,5) 7-2. anymatch: 변수리스트의 값이 하나라도 지정한 정수형 숫자 범위에 해당되면 1, 그렇지 않으면 0으로 처리하는 함수 anymatch(변수리스트), values(정수형 숫자범위) * 변수리스트에는 한 개 이상의 변수명 입력 가능 ① 숫자범위는 정수만 가능 * 결과가 한자리 숫자로 표현되기 때문에 데이터 타입을 가장 작은 byte 타입으로 지정하면 메모리를 절약할 수 있습니다. use https://www.stata-press.com/data/r17/auto, clear keep rep78 headroom // 지정된 변수만 남김 egen anymatch = anymatch(rep78 headroom), values(3/5) // 지정된 변수값이 값이 하나라도 3~5사이의 정수에 해당되면 1 그렇지 않으면 0 생성 // values(3/5)를 values(3 4 5)로 입력 가능 list in 11/20 // 모든 변수의 11~20번째 값 보기
<실행 결과> ▶ 대화창 이용 방법 - 예제: egen anymatch = anymatch(rep78 headroom), values(3/5)
▶ 참고사항! generate 명령어에 inlist( )를 사용하여, 위와 동일한 값을 만들 수 있습니다. generate anymatch = inlist(rep78,3,4,5) 7-3. anycount: 지정한 정수형 숫자범위에 해당되는 변수리스트의 관측치 개수 구하는 함수 anycount(변수리스트), values(정수형 숫자범위) * 변수리스트에는 한 개 이상의 변수명 입력 가능 ① 숫자범위는 정수만 가능 use https://www.stata-press.com/data/r17/auto, clear keep rep78 headroom // 지정된 변수만 남김 egen anycount = anycount(rep78 headroom), values(3/5) // 3~5사이의 정수에 해당되는 rep78, headroom의 관측치 개수를 합산하여 생성 // values(3/5)를 values(3 4 5)로 입력 가능 list in 11/20 // 모든 변수의 11~20번째 값 보기
<실행 결과> ▶ 대화창 이용 방법 - 예제: egen anycount = anycount(rep78 headroom), values(3/5)
7-4. group: 오름차순으로 정렬한 변수리스트의 값에서 동일한 그룹을 묶은 뒤, 그룹의 순서대로 번호를 부여하는 함수 group(변수리스트),[missing autotype label[(값라벨명 [, replace truncate(#)])]] * 변수리스트에는 하나 이상의 변수명 입력 가능 ① 변수리스트는 숫자변수, 문자변수 모두 가능 ② 문자변수의 오름차순은 알파벳의 경우 A부터 Z, 한글의 경우 ㄱ부터 ㅎ으로 정렬 ③ 번호는 1부터 생성 ④ 결측치는 제외되나, 옵션 missing을 적용하면 포함 ⑤ 옵션 autotype를 적용하면 새 변수에 맞는 가장 작은 사이즈의 데이터 타입으로 저장 ** ⑥~⑨번을 이해하기 전, 여기를 클릭하여 "라벨"에 대한 내용을 반드시 숙지하세요 ** ⑥ 변수라벨은 "group(변수리스트)" 형식으로 자동 생성 ⑦ 옵션 label 또는 label(값라벨명)을적용하면 새 변수에 값라벨 설정 가능 - 옵션 label뒤에 값라벨명을 입력하지 않으면 값라벨명은 새 변수명과 동일하게 설정 - 값라벨은 변수들의 값 조합으로 생성되며, 값라벨이 있는 경우 값 대신 값라벨을 사용 ⑧ 옵션 label(..., replace)를 적용하면 기존 값라벨명의 정보에 덮어씌움 ⑨ 옵션 label(..., truncate(#))를 적용하면 값라벨을 우물정(#)길이만큼 잘라내고 설정함 〈예제 1〉 use https://www.stata-press.com/data/r17/egenxmpl6, clear keep sex race // 지정된 변수만 남김 keep in 1/7 // 1~7번째 관측치만 남김 egen group = group(sex race) // sex와 race값을 그룹으로 분류 후 정렬한 순서대로 번호 생성(결측치 제외) egen group_m = group(sex race), missing // 그룹 분류 대상에 결측치를 포함 list // 모든 변수값 보기
<실행 결과> ▶ 대화창 이용 방법 - 예제: egen group = group(sex race)
use https://www.stata-press.com/data/r17/egenxmpl6, clear keep sex smokes // sex와 smokes만 남김 keep in 1/5 // 1~5번째 관측치만 남김 egen group0 = group(sex smokes) // 새변수 group0의 변수라벨은 "group(sex smokes)"로 자동생성 egen group1 = group(sex smokes), label // 새변수 group1의 값라벨을 설정 // 값라벨명을 지정하지 않아서 새 변수명과 동일 // group1의 값라벨은 변수(sex smoke)의 조합으로 생성 // - 기존에 값라벨이 없는 smokes는 값(0, 1)을 그대로 사용 // - 기존에 값라벨이 있는 sex는 값 대신 값라벨(Female, Male)을 사용 egen group2 = group(sex smokes), label(lb) // 새변수 group2의 값라벨명은 "lb"로 지정 사용 describe group* // group으로 시작하는 변수값 모두 보기
<실행 결과> use https://www.stata-press.com/data/r17/egenxmpl6, clear keep sex race // sex와 race만 남김 keep in 1/5 // 1~5번째 관측치만 남김 egen group1 = group(sex race), label(rglab, replace) // 기존에 rglab이라는 이름의 값라벨이 있다면 덮어쓰고, 그렇지 않으면 새로 생성 egen group2 = group(sex race), label(rglab2, truncate(1)) // 각 변수의 값을 한 자리로 잘라 값라벨 rglab2을 생성 * 변수라벨과 값라벨에 대한 자세한 내용은 Stata 메인화면에서 "변수관리자" 이용(창 > 변수관리자)를 확인 label list // 값라벨의 상세 목록을 확인(rglab 목록은 늘어났고, rglab2정보는 생성)
<실행 결과> ※ 아래 링크를 클릭하시면 더 많은 명령어 및 데이터 응용 방법을 확인할 수 있습니다. ※ 네이버 블로그는 정보성 페이지로 질문을 받지 않고 있습니다. 해당 내용은 “Stata 사용자모임” 카페의 "Q&A "게시판을 이용하여 주시기 바랍니다. ※ 해당 내용의 저작권은 Stata 한국 공식 판매처인 "제이슨티지"에 있습니다. |