Wikipedia OECD 웹사이트에서 먼저 OECD 국가명을 추출한다.
library(tidyverse)
library(rvest)
read_html("https://en.wikipedia.org/wiki/OECD") %>%
oecd_countries <- html_nodes(xpath = '//*[@id="mw-content-text"]/div[1]/table[5]') %>%
html_table() %>%
.[[1]]
oecd_countries %>%
oecd_df <- as_tibble() %>%
janitor::clean_names() %>%
# mutate(id = row_number()) %>%
select(content=country, start=membership_1, group = geographic_location) %>%
mutate(start = str_extract(start, "[0-9]{1,2}\\s[a-zA-Z]+\\s[0-9]{4}")) %>%
mutate(start = lubridate::dmy(start))
oecd_df
# A tibble: 37 x 3
content start group
<chr> <date> <chr>
1 Australia 1971-06-07 Oceania
2 Austria 1961-09-29 Europe
3 Belgium 1961-09-13 Europe
4 Canada 1961-04-10 North America
5 Chile 2010-05-07 South America
6 Colombia 2020-04-28 South America
7 Czech Republic 1995-12-21 Europe
8 Denmark 1961-05-30 Europe
9 Estonia 2010-12-09 Europe
10 Finland 1969-01-28 Europe
# ... with 27 more rows
OECD 가입순서대로 대륙별로 타임라인을 잡아보자. timeviz
팩키지를 통해 시간순으로 OECD 가입국가를 살펴봄으로서 대략적인 추세를 확인할 수 있다. 특히 대륙별로 가입순서를 나눠 보는 것도 흥미로운 사항을 파악할 수 있을 것이다.
library(timevis)
oecd_df %>%
location <- count(group) %>%
select(id = group) %>%
mutate(content = id)
timevis(oecd_df, groups = location, options = list(stack = FALSE)) %>%
setOptions(list(editable = TRUE)) %>%
setSelection("South Korea") %>%
fitWindow(list(animation = FALSE))
OECD 국가별 비교를 위해서 다양한 지표를 활용하여 평가가 이루지고 있다. 부폐관련 지표, 민주화 관련 지표, 국가 안정성 지표 등 다양한 지표를 통해 국가별 비교 작업을 수행할 수 있다. OECD 국가별 결측값이 일부 있어 이를 구글링을 통해 위키백과사전에 실린 오류를 수정하여 최대한 국가를 살리도록 한다.
read_html("https://en.wikipedia.org/wiki/OECD") %>%
oecd_fact <- html_nodes(xpath = '//*[@id="mw-content-text"]/div[1]/table[6]') %>%
html_table() %>%
.[[1]] %>%
as_tibble() %>%
janitor::clean_names()
oecd_fact %>%
oecd_fact_df <- set_names(c("country", "area", "population", "gdp",
"gdp_per_capita", "income_inequality",
"hdi", "fsi", "rli", "cpi", "ief",
"gpi", "wpfi", "di")) %>%
mutate(income_inequality = ifelse(income_inequality == "N/A", NA, income_inequality),
fsi = ifelse(fsi == "N/A", NA, fsi),
rli = ifelse(rli == "N/A", NA, rli),
gpi = ifelse(gpi == "N/A", NA, gpi)) %>%
select(-rli) %>% ## 결측값이 8개국
mutate(income_inequality = ifelse(country == "New Zealand", 33, income_inequality),
income_inequality = ifelse(country == "Poland", 31.8, income_inequality),
fsi = ifelse(country == "Israel", 75.1, fsi)) %>%
filter(!str_detect(country, "Luxembourg|OECD|Country")) %>%
mutate(across(.cols=area:di, parse_number))
## 변수 결측값
sapply(oecd_fact_df, function(y) sum(length(which(is.na(y))))) %>%
as.data.frame() %>%
rownames_to_column(var="country") %>%
as_tibble() %>%
set_names(c("country", "missings")) %>%
arrange(desc(missings))
# A tibble: 13 x 2
country missings
<chr> <int>
1 country 0
2 area 0
3 population 0
4 gdp 0
5 gdp_per_capita 0
6 income_inequality 0
7 hdi 0
8 fsi 0
9 cpi 0
10 ief 0
11 gpi 0
12 wpfi 0
13 di 0
## 관측점 국가별 결측값
rowSums(is.na(oecd_fact_df)) %>%
as_tibble() %>%
bind_cols(oecd_fact_df %>% select(country)) %>%
rename(missings = value) %>%
arrange(desc(missings))
# A tibble: 36 x 2
missings country
<dbl> <chr>
1 0 Australia
2 0 Austria
3 0 Belgium
4 0 Canada
5 0 Chile
6 0 Colombia
7 0 Czech Republic
8 0 Denmark
9 0 Estonia
10 0 Finland
# ... with 26 more rows
정제된 데이터를 경제적인 측정지수 외에 다양한 지수를 바탕으로 일별해보자.
%>%
oecd_fact_df arrange(desc(gdp)) %>%
DT::datatable() %>%
DT::formatRound(c("area", "population", "gdp", "gdp_per_capita"), digits = 0, interval = 3)
위키백과사전에 담긴 OECD 국가정보와 World Economic Forum, IMD 국가 경쟁력 지표를 한데 묶는데 관계형 데이터베이스 모형에서 키값이 중요하기 때문에 countrycode
팩키지를 중간 다리로 삼아 최대한 정확히 국가명이 매칭되도록 준비한다.
library(countrycode)
oecd_fact_df %>%
oecd_fact_df <- mutate(flags = countrycode(country, origin = 'country.name', 'unicode.symbol'),
iso3c = countrycode(country, origin = 'country.name', 'iso3c')) %>%
select(country, flags, iso3c, everything())
oecd_fact_df
# A tibble: 36 x 15
country flags iso3c area population gdp gdp_per_capita income_inequali~
<chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Austra~ "\U0~ AUS 7.74e6 24598933 1.19e12 48460 34.7
2 Austria "\U0~ AUT 8.39e4 8809212 4.62e11 52398 30.5
3 Belgium "\U0~ BEL 3.05e4 11372068 5.44e11 47840 27.7
4 Canada "\U0~ CAN 9.98e6 36708083 1.71e12 46705 34
5 Chile "\U0~ CHL 7.56e5 18054726 4.45e11 24635 47.7
6 Colomb~ "\U0~ COL 1.14e6 48901066 7.09e11 14507 49.7
7 Czech ~ "\U0~ CZE 7.89e4 10591323 3.85e11 36327 25.9
8 Denmark "\U0~ DNK 4.29e4 5769603 2.96e11 51364 28.2
9 Estonia "\U0~ EST 4.52e4 1315480 4.18e10 31742 32.7
10 Finland "\U0~ FIN 3.38e5 5511303 2.47e11 44866 27.1
# ... with 26 more rows, and 7 more variables: hdi <dbl>, fsi <dbl>, cpi <dbl>,
# ief <dbl>, gpi <dbl>, wpfi <dbl>, di <dbl>
디지털 전환(Digital Transformation) 대전환기에 WEF(World Economic Forum)에서 측정한 국가별 경쟁력 지표와 IMD 디지털 경쟁력(IMD Digital Competitiveness) 국가별 경쟁력 지표를 핵심 지표로 삼도록 한다.