# 현재 OECD 국가는 38개 국가.
# 이들 국가의 각종 연령대별 경활률, 고용률, 실업률 통계: 1950~2020년
# 자료제공 사이트: https://stats.oecd.org/Index.aspx?DataSetCode=lfs_sexage_i_r
# 해당 사이트에 가서 다운받을 자료의 레이아웃을 다음과 같이 설정해서, CSV파일로 다운로드 받으면 아래의 코드를 그대로 사용할 수 있음. ^^
# 코드문
import delimited "다운로드받은 폴더\LFS_SEXAGE_I_R_16082021045504964_경활_고용_실업_1950_2020.csv", delimiter(comma) clear // 파일명은 알아서 바꾸고....
# 기초 정리
rename (country v2 v4 age v6 v8 time value) (ccode country gender agei ages varz year myval)
keep ccode country gender agei ages varz year myval
replace varz = "empr" if varz=="Employment/population ratio"
replace varz = "lfpr" if varz=="Labour force participation rate"
replace varz = "umpr" if varz=="Unemployment rate"
reshape wide myval , i(ccode country gender agei ages year) j(varz) string
rename myval* *
replace ages = subinstr(ages," ","",.)
drop agei
save oecd_장기통계.dta, replace
use oecd_장기통계.dta, clear
replace country = subinstr(country," ","",.)
replace country = "OECD" if country=="OECDcountries"
reshape wide empr lfpr umpr , i(ccode country gender ages) j(year)
#
gen icc = .
lab def licc 9999 "just"
loc ii 0
foreach myc in AUS AUT BEL CAN CHL COL CRI CZE DNK EST FIN FRA DEU GRC HUN ISL IRL ISR ITA JPN LVA LTU LUX MEX NLD NZL NOR POL PRT SVK SVN ESP SWE CHE TUR GBR USA KOR OECD {
loc ++ii
loc mycc : word `ii' of `astr1'
replace icc = `ii' if ccode=="`myc'"
lab def licc `ii' "`myc'", add
}
lab val icc licc
** 2020년 값이 모두 없는 국가: 독일.
** 다른 국가들은 특이 연령구간 일부에만 없음.
foreach myvar in empr lfpr umpr {
replace `myvar'2020 = `myvar'2019 if ccode=="DEU" & `myvar'2019!=. & `myvar'2020==.
}
save "$PnL_Anal\OECD_장기통계_경고실_비교.dta", replace
** 그래프...====================
use "$PnL_Anal\OECD_장기통계_경고실_비교.dta", clear
replace gender = subinstr(gender," ","",.)
br country icc ccode gender ages lfpr2020
# 여기가 이해하기 어려울 듯.... 여튼 각 조건별에 따라 라벨을 붙이기 위해서 필요한거임.
by gender ages (lfpr2020), sort: gen virlab = _n
gen obsn = _n
lab def lvir 9999 "just"
lab val virlab lvir
foreach MyAges in 15to24 25to64 65+ 15to64 25to54 { // 연령구간별 루프
foreach mygen in Allpersons Men Women { // 성별 루프
** 각 조건별 정렬순위에 따른 라벨 새로 붙이기
lab drop lvir
lab val virlab lvir
foreach ii of numlist 1(1)39 {
su obsn if ages=="`MyAges'" & gender=="`mygen'" & virlab==`ii'
loc mystr = ccode[`r(mean)']
lab def lvir `ii' "`mystr'", add
}
# 이제 그린다....
#delimit ;
twoway
(bar lfpr2020 virlab if ~inlist(icc,38,39), barw(0.8) fcolor(none))
(bar lfpr2020 virlab if icc==38, fcolor(yellow) barw(0.8) ) /*한국*/
(bar lfpr2020 virlab if icc==39, barw(0.8) ) /*OECD평균*/
(scatter lfpr1980 virlab,msymbol(O) msize(medsmall) mcolor(gs6))
(scatter lfpr1995 virlab,msymbol(Th) msize(medsmall) mcolor(black))
(scatter lfpr2010 virlab,msymbol(lgx) msize(medium) mcolor(black))
if ages=="`MyAges'" & gender=="`mygen'" ,
xlabel(1(1)39, angle(vertical) valuelabel ticks labsize(small) nogrid)
xmtick(0.5(1)39.5, grid noticks )
ytitle("") graphregion(margin(zero) ) plotregion(margin(medlarge))
ylab(,angle(0) labsize(small)) xtitle("")
legend(order(4 "1980년" 5 "1995년" 6 "2010년" 1 "2020년" ) position(11) ring(0) row(1) region(lcolor(ltblue))) ;
#delimit cr
graph export "$PnL_Anal\01_그래프\gr701_OECD_경활률장기_`MyAges'_`mygen'.png", as(png) width(1200) replace
}
}
'MySTATA > 그래프 다루기' 카테고리의 다른 글
x축 라벨 - 두 줄 넣기 (0) | 2021.11.17 |
---|---|
선그래프 특정부분 강조 + 배경색 (0) | 2021.08.20 |
Gant chart ? (0) | 2021.08.11 |
graph bar 정렬 문제 (0) | 2021.08.10 |
텍스트 + 음영 넣기 (38개 국가 고령화 비교) (0) | 2021.08.09 |