영상 잘 봤습니다 감사합니다~ 질문이 있는데요ㅠ 두 개 문자열 변수 a, b 에서 변수 a 에 있는 기업명과 변수 b에 기업명 중 (같은 행에 있는 지 여부와 상관 없이) 같은 게 있으면 1, 아니면 0 으로 더미변수를 만들려고 하는데 gen c = 0 replace c = 1 if (a == b) 로 하니까 같은 행끼리 같은 경우에만 1로 처리되어서요ㅠ 어떻게 해야 할지 도움 요청드립니다
안녕하세요? 아래와 같이 코드 만들어 보았는데 혹시 의도하시는 것이 맞는지 확인 부탁드립니다 :D do-file 에디터에 넣고 실행 하시면 됩니다. 혹시 추가 설명이 더 필요한 부분 있으면 댓글 주세요! *, // 는 주석이라서 그대로 붙여 넣으셔도 코드 실행에는 이상 없습니다. //---------------아래부터 코드---------------// * test data 생성 clear input str1 var1 str1 var2 "A" "C" "C" "E" "B" "D" "D" "F" "A" "C" end * 매칭할 기업목록1(a변수) 따로 떼어내기 rename var1 var preserve keep var duplicates drop var, force save test, replace restore * 매칭을 위해서 잠시 변수명 변경 rename (var var2) (var1 var) merge m:1 var using test // 기업목록2(b)에 기업목록1(a) 붙이기 drop if _merge == 2 // 불필요한 row 삭제 label drop _merge // label 벗기기 rename _merge dummy replace dummy = 0 if dummy == 1 // 매칭 안 된 기업들은 0으로 변경 replace dummy = 1 if dummy == 3 // 매칭 된 기업들은 1로 변경
@@2thedata 정말 감사합니다!! 주신 코드로 매칭된 기업명들을 list로 확인해서 기업명을 일일이 gen dummy = 0 replace dummy = 1 if var == "기업명" 로 변환해서 만든 dummy와 tab해서 대조해보니까, 제가 가지고 있는 데이터가 복잡해서 그런지 코드과정에서 행이 바뀌고 하는 과정에서 뭔가 차이가 생겨서 그런지 1수가 다르게 나오더라구요ㅠ 그래도 덕분에 매칭되는 기업명을 확인해서 replace 방식으로 수월하게 했습니다~~ 도움 주셔서 감사합니다^^
조금 길지만 단계별로 설명 드리기 쉬운 직관적인 방법으로는 아래와 같이 만들수 있습니다. 다만 연속변수라고 하셨는데 크거나 같다(>=)와 같은 것은 직접 데이터 보시고 맞게 수정하시면 됩니다. 아래 예시에서는 var 가 1인 경우와 3인 경우는 그 어떤 더미 값도 없습니다. gen dum = . replace dum = 0 if var > 1 & var 3 마지막에 tab dum 하셔서 결과 확인해보세요. 혹시 더 궁금하신점 있으시면 댓글 남겨주세요. 영상 시청 해 주셔서 감사합니다 🙂
stata 시작하면서 막막했는데 잘보고 있습니다!😊
감사합니다. 앞으로도 도움 되는 영상 제작해서 업로드 하도록 하겠습니다:D
영상 감사합니다~
혹시 Stata 상에서 실제데이터를 가지고 회귀분석하는 방법도 알 수 있을까요?
가능하다면 Stata 를 이용해서 이중차분법(DID) 분석을 하는 방법을 알고 싶습니다.
안녕하세요~ 영상 만드는 시간이 많이 부족해서 올리지 못하고 있는데, 시간 내서 통계분석 관련 영상도 제작해 보도록 하겠습니다. 관심 갖고 질문 주셔서 감사드립니다! :D
이렇게 더미 만들때ㅡ too few .quotes 나올땐어떻게해냐하나요??
@@남생이-x6u 코드에서 따옴표(quotes, “)가 하나 빠진 것 같습니다.
set trace on
명령어를 실행시키고 오류가 나는 코드를 실행시키시면 어느 부분에서 오류가 났는지 확인하실 수 있습니다. ^^
영상 잘 봤습니다 감사합니다~
질문이 있는데요ㅠ
두 개 문자열 변수 a, b 에서 변수 a 에 있는 기업명과 변수 b에 기업명 중 (같은 행에 있는 지 여부와 상관 없이) 같은 게 있으면 1, 아니면 0 으로 더미변수를 만들려고 하는데
gen c = 0
replace c = 1 if (a == b) 로 하니까 같은 행끼리 같은 경우에만 1로 처리되어서요ㅠ
어떻게 해야 할지 도움 요청드립니다
안녕하세요? 아래와 같이 코드 만들어 보았는데 혹시 의도하시는 것이 맞는지 확인 부탁드립니다 :D
do-file 에디터에 넣고 실행 하시면 됩니다. 혹시 추가 설명이 더 필요한 부분 있으면 댓글 주세요!
*, // 는 주석이라서 그대로 붙여 넣으셔도 코드 실행에는 이상 없습니다.
//---------------아래부터 코드---------------//
* test data 생성
clear
input str1 var1 str1 var2
"A" "C"
"C" "E"
"B" "D"
"D" "F"
"A" "C"
end
* 매칭할 기업목록1(a변수) 따로 떼어내기
rename var1 var
preserve
keep var
duplicates drop var, force
save test, replace
restore
* 매칭을 위해서 잠시 변수명 변경
rename (var var2) (var1 var)
merge m:1 var using test // 기업목록2(b)에 기업목록1(a) 붙이기
drop if _merge == 2 // 불필요한 row 삭제
label drop _merge // label 벗기기
rename _merge dummy
replace dummy = 0 if dummy == 1 // 매칭 안 된 기업들은 0으로 변경
replace dummy = 1 if dummy == 3 // 매칭 된 기업들은 1로 변경
@@2thedata 정말 감사합니다!!
주신 코드로 매칭된 기업명들을 list로 확인해서 기업명을 일일이
gen dummy = 0
replace dummy = 1 if var == "기업명" 로 변환해서 만든 dummy와 tab해서 대조해보니까,
제가 가지고 있는 데이터가 복잡해서 그런지 코드과정에서 행이 바뀌고 하는 과정에서 뭔가 차이가 생겨서 그런지 1수가 다르게 나오더라구요ㅠ 그래도 덕분에 매칭되는 기업명을 확인해서 replace 방식으로 수월하게 했습니다~~ 도움 주셔서 감사합니다^^
잘 해결 되었다니 다행입니다! :)
연속변수에서 1보다 크고 3보다 작은 경우는 0, 1보다 작은 경우는 1, 3보다 큰 경우는 2 라고 정의되는 dummy를 만들려면 어케 해야 하나요 ㅠㅠ
조금 길지만 단계별로 설명 드리기 쉬운 직관적인 방법으로는 아래와 같이 만들수 있습니다.
다만 연속변수라고 하셨는데 크거나 같다(>=)와 같은 것은 직접 데이터 보시고 맞게 수정하시면 됩니다. 아래 예시에서는 var 가 1인 경우와 3인 경우는 그 어떤 더미 값도 없습니다.
gen dum = .
replace dum = 0 if var > 1 & var 3
마지막에
tab dum
하셔서 결과 확인해보세요.
혹시 더 궁금하신점 있으시면 댓글 남겨주세요. 영상 시청 해 주셔서 감사합니다 🙂