본문 바로가기
  • plotly로 바로쓰는 동적시각화 in R & 파이썬
금융 데이터 분석

세계은행(World Bank) 데이터 사용 in R

by 아참형인간 2022. 9. 20.
wdi.knit

WDI

세계은행(世界銀行, World Bank)1946년 8월에 전 세계의 빈곤 퇴치 및 개발도상국의 경제 발전을 목표로 1944년 7월 브레튼 우즈 체제에 발족하여 1945년 설립된 다자개발은행이다.

국제통화기금(IMF), 세계무역기구(WTO)와 함께 3대 국제경제 트로이카로 꼽히며, 영향력으로 봤을 때는 IMF하고 함께 세계 경제의 양대 산맥을 형성하고 있다.1

세계은행에서 많은 일을 하지만 데이터 분석하는 사람들에게는 매우 방대한 전세계 관련 데이터베이스를 개방하고 있다는 것이다. 단지 경제에 관련된 데이터베이스 뿐 아니라 사회, 보건, 교육 등 많은 데이테베이스를 개방한다.

WDI 패키지는 월드 뱅크에서 제공하는 데이터베이중에서 40개 이상의 데이터베이스를 액세스를 하는 함수를 제공한다. 특히 월드 뱅크에서 산출하는 세계 개발 지수(World development Indicators), 국제 채무 통계, 기업 활동, 인적 자본 지수, 하위 국가 빈곤 지수와 같은 다양한 통계, 인덱스도 엑세스할 수 있다는 장점도 있다.

패키지 설치

WDI 패키지는 CRAN에 등록된 정식 패키지이기 떄문에 다음과 같이 바로 설치가 가능하다.

if (!requrie(WDI)) {
  install.packages('WDI')
  library(WDI)
}

만약 최신 개발 버전을 설치하고자 한다면 다음과 같이 설치할 수 있다.

library(remotes)
install_github('vincentarelbundock/WDI')

데이터 찾기 : WDIsearch()

WDI 패키지에서 액세스 가능한 데이터를 키워드로 검색하기 위해서 WDIsearch()를 사용할 수 있다. WDIsearch()는 ‘string’, ‘field’, ‘short’, ’cache’의 네 가지 매개변수를 사용한다.

  • string : field로 설정된 열에서 찾을 문자열을 지정
  • field : WDI 패키지에서 제공하는 월드 뱅크 데이터의 열 중에 키워드를 찾을 열 설정하는데 열은 ‘indicator’, ‘name’, ‘description’, ‘sourceDatabase’, ’sourceOrganization’의 다섯가지 열이 있음
  • short : TRUE로 설정하면 인디케이터의 코드와 이름만 보여주고 FALSE로 설정하면 전체 데이터 열을 다 보여줌
  • cache : 생략되면 자신의 컴퓨터에 저장되지 않은 온라인 데이터를 가져옴

WDI에서 제공하는 데이터의 전체 목록을 확인하기 위해서는 매개변수 없이 WDIsearch()를 사용할 수 있겠지만 데이터가 너무 많아 이렇게 확인하기 보다는 World bank 홈페이지(https://data.worldbank.org/indicator?tab=all)를를){.uri} 참조하는 것이 더 좋겠다.

다음은 월드 뱅크에서 제공하는 데이터 중 ’gdp’와 관련된 인디케이터 데이터를 찾거나 데이터 이름이 ’children’과 관련된 데이터를 찾는 코드는 다음과 같다.

as.data.frame(WDIsearch(string = 'gdp', field = 'indicator')) |> head(10)
##                 indicator
## 1          5.51.01.10.gdp
## 2         6.0.GDP_current
## 3          6.0.GDP_growth
## 4             6.0.GDP_usd
## 5      6.0.GDPpc_constant
## 6      BN.CAB.XOKA.GDP.ZS
## 7          BN.CUR.GDPM.ZS
## 8  BN.KLT.DINV.DRS.GDP.ZS
## 9       EG.GDP.PUSE.KO.87
## 10      EG.GDP.PUSE.KO.KD
##                                                                        name
## 1                                                     Per capita GDP growth
## 2                                                           GDP (current $)
## 3                                                     GDP growth (annual %)
## 4                                                     GDP (constant 2005 $)
## 5                      GDP per capita, PPP (constant 2011 international $) 
## 6                                        Current account balance (% of GDP)
## 7  Current account balance excluding net official capital grants (% of GDP)
## 8                         Foreign direct investment, net inflows (% of GDP)
## 9            GDP per unit of energy use (1987 US$ per kg of oil equivalent)
## 10           GDP per unit of energy use (2000 US$ per kg of oil equivalent)
as.data.frame(WDIsearch(string = 'children', field = 'name')) |> 
  head(10)
##         indicator
## 1   2.4_OOSC.RATE
## 2     CC.CUF.STUN
## 3     HD.HCI.STNT
## 4  HD.HCI.STNT.FE
## 5  HD.HCI.STNT.MA
## 6     HF.IMM.FULL
## 7  HF.IMM.FULL.Q1
## 8  HF.IMM.FULL.Q2
## 9  HF.IMM.FULL.Q3
## 10 HF.IMM.FULL.Q4
##                                                                          name
## 1  Rate of out of school children, national source (% of relevant age group) 
## 2                  Children under 5 years of age who are stunted (% of total)
## 3                                    Fraction of Children Under 5 Not Stunted
## 4                            Fraction of Children Under 5 Not Stunted, Female
## 5                              Fraction of Children Under 5 Not Stunted, Male
## 6                        Immunization, full (% of children ages 15-23 months)
## 7           Immunization, full (% of children ages 15-23 months): Q1 (lowest)
## 8                    Immunization, full (% of children ages 15-23 months): Q2
## 9                    Immunization, full (% of children ages 15-23 months): Q3
## 10                   Immunization, full (% of children ages 15-23 months): Q4

데이터 다운로드 : WDI()

WDIsearch()를 통해 자신이 찾는 데이터를 검색했다면 해당 데이터를 다운로드 해야한다. 다운로드를 위해서는 WDI()를 사용하는데 주로 사용되는 매개변수는 다음과 같다 .

  • indicator : 다운로드를 원하는 데이터에 대한 indicator, 다운로드하기 위한 데이터의 ID로 사용됨
  • country : 다운로드 데이터 중 특정 국가를 제한하는 매개변수로 ISO-2 character code를 사용(https://www.iban.com/country-codes)한다.
  • start : 데이터 검색 시작년도
  • end : 데이터 검색 종료년도

다음은 앞서 검색한 정보중에 ’한국의 연간 GDP 성장률’을 다운로드 한다.

WDI(indicator = 'NY.GDP.MKTP.KD.ZG', country = 'KR')
##    iso2c     country NY.GDP.MKTP.KD.ZG year
## 1     KR Korea, Rep.         4.0211585 2021
## 2     KR Korea, Rep.        -0.8520314 2020
## 3     KR Korea, Rep.         2.2439779 2019
## 4     KR Korea, Rep.         2.9074038 2018
## 5     KR Korea, Rep.         3.1596357 2017
## 6     KR Korea, Rep.         2.9468817 2016
## 7     KR Korea, Rep.         2.8091033 2015
## 8     KR Korea, Rep.         3.2024538 2014
## 9     KR Korea, Rep.         3.1647086 2013
## 10    KR Korea, Rep.         2.4025310 2012
## 11    KR Korea, Rep.         3.6856678 2011
## 12    KR Korea, Rep.         6.8048249 2010
## 13    KR Korea, Rep.         0.7926990 2009
## 14    KR Korea, Rep.         3.0129849 2008
## 15    KR Korea, Rep.         5.7995484 2007
## 16    KR Korea, Rep.         5.2643266 2006
## 17    KR Korea, Rep.         4.3085427 2005
## 18    KR Korea, Rep.         5.1973914 2004
## 19    KR Korea, Rep.         3.1472912 2003
## 20    KR Korea, Rep.         7.7251427 2002
## 21    KR Korea, Rep.         4.8523996 2001
## 22    KR Korea, Rep.         9.0608333 2000
## 23    KR Korea, Rep.        11.4669424 1999
## 24    KR Korea, Rep.        -5.1294482 1998
## 25    KR Korea, Rep.         6.1705524 1997
## 26    KR Korea, Rep.         7.8907033 1996
## 27    KR Korea, Rep.         9.6145654 1995
## 28    KR Korea, Rep.         9.2686663 1994
## 29    KR Korea, Rep.         6.8774741 1993
## 30    KR Korea, Rep.         6.1986428 1992
## 31    KR Korea, Rep.        10.7780561 1991
## 32    KR Korea, Rep.         9.8775525 1990
## 33    KR Korea, Rep.         7.0728936 1989
## 34    KR Korea, Rep.        11.9877156 1988
## 35    KR Korea, Rep.        12.7236921 1987
## 36    KR Korea, Rep.        11.3272612 1986
## 37    KR Korea, Rep.         7.8388640 1985
## 38    KR Korea, Rep.        10.5516404 1984
## 39    KR Korea, Rep.        13.3761745 1983
## 40    KR Korea, Rep.         8.3380781 1982
## 41    KR Korea, Rep.         7.2461763 1981
## 42    KR Korea, Rep.        -1.6456876 1980
## 43    KR Korea, Rep.         8.6712267 1979
## 44    KR Korea, Rep.        10.9529857 1978
## 45    KR Korea, Rep.        12.3359822 1977
## 46    KR Korea, Rep.        13.2214478 1976
## 47    KR Korea, Rep.         7.8399333 1975
## 48    KR Korea, Rep.         9.5118354 1974
## 49    KR Korea, Rep.        14.8983227 1973
## 50    KR Korea, Rep.         7.2143607 1972
## 51    KR Korea, Rep.        10.5455136 1971
## 52    KR Korea, Rep.        10.0527348 1970
## 53    KR Korea, Rep.        14.5613667 1969
## 54    KR Korea, Rep.        13.1657683 1968
## 55    KR Korea, Rep.         9.0796066 1967
## 56    KR Korea, Rep.        11.9939566 1966
## 57    KR Korea, Rep.         7.3184336 1965
## 58    KR Korea, Rep.         9.4738247 1964
## 59    KR Korea, Rep.         9.0205683 1963
## 60    KR Korea, Rep.         3.8952725 1962
## 61    KR Korea, Rep.         6.9359927 1961
## 62    KR Korea, Rep.                NA 1960

다음은 한국, 미국, 일본의 연평균 GDP 성장률, 경상 수지(GDP 대비 %), 외국인 직접 투자, 순유입(GDP 대비 %), 외국인 직접 투자, 순유출(GDP 대비 %)를 선그래프를 시각화하면 다음과 같다.

WDI(indicator = c('NY.GDP.MKTP.KD.ZG', 'BN.CAB.XOKA.GD.ZS', 'BX.KLT.DINV.WD.GD.ZS', 'BM.KLT.DINV.WD.GD.ZS'), 
    country = c('KR', 'US', 'JP')) |>
  rename(`GDP 성장률(연간 %)` = NY.GDP.MKTP.KD.ZG, 
         `경상 수지(GDP 대비 %)` = BN.CAB.XOKA.GD.ZS, 
         `외국인 직접 투자, 순유입(GDP 대비 %)` = BX.KLT.DINV.WD.GD.ZS, 
         `외국인 직접 투자, 순유출(GDP 대비 %)` = BM.KLT.DINV.WD.GD.ZS) |>
  pivot_longer(4:7, names_to = '구분') |>
  ggplot(aes(x = year)) +
  geom_line(aes(y = value, group = country, color = country)) +
  facet_wrap(~구분, scales = 'free_y') +
  labs(x = '연도', y = '비율(%)', color = '국가', caption = 'source : World Bank Database')

댓글