1. Countries_SES.csvの処理と可視化

  1. パッケージtidyverseを読み込む。
  2. Countries_SES.csvを読み込み、SES_dfという名のオブジェクトで格納する。
    • Country: 国名
    • Population: 人口 (人)
    • Area: 面積(Km2
    • GDP: 国内総生産(100万米ドル)
    • Continent: 大陸
library(tidyverse)
SES_df <- read_csv("Data/Countries_SES.csv")
  1. 人口密度を計算し、Densityという名の新しい列に格納する。Density列はAreaGDPの間へ移動させる。

\[ 人口密度 = \frac{人口}{面積}. \]

SES_df <- SES_df %>%
    mutate(Density = Population / Area) %>%
    relocate(Density, .after = Area)
  1. 大陸ごとに何カ国のケースがあるかを表す棒グラフを作成する。
SES_df %>%
    ggplot() +
    geom_bar(aes(x = Continent)) +
    labs(x = "Continent", y = "Number of countries in the dataset")

  1. table()関数を使用し、Continent変数の度数を確認する。
table(SES_df$Continent)
## 
##  Africa America    Asia  Europe Oceania 
##      54      36      42      49       4
  1. 一人当たりGDPを計算し、GDP_per_capitaという名の新しい列に格納する。GDP_per_capitaは列はGDPContinent列の間へ移動させる。
    • GDPの単位は100万ドルであることに注意

\[ 一人当たり\text{GDP} = \frac{\text{GDP} \times 1000000}{人口}. \]

SES_df <- SES_df %>%
    mutate(GDP_per_capita = (GDP * 1000000 / Population) ) %>%
    relocate(GDP_per_capita, .after = GDP)
  1. ここまでの処理を確認するために改めてSES_dfを出力する。
SES_df
## # A tibble: 185 x 7
##    Country           Population    Area Density     GDP GDP_per_capita Continent
##    <chr>                  <dbl>   <dbl>   <dbl>   <dbl>          <dbl> <chr>    
##  1 Afghanistan         38928346  652860   59.6   1.91e4           491. Asia     
##  2 Albania              2877797   27400  105.    1.53e4          5309. Europe   
##  3 Algeria             43851044 2381740   18.4   1.70e5          3876. Africa   
##  4 Andorra                77265     470  164.    3.15e3         40821. Europe   
##  5 Angola              32866272 1246700   26.4   9.46e4          2879. Africa   
##  6 Antigua and Barb…      97929     440  223.    1.73e3         17643. America  
##  7 Argentina           45195774 2736690   16.5   4.50e5          9949. America  
##  8 Armenia              2963243   28470  104.    1.37e4          4614. Europe   
##  9 Australia           25499884 7682300    3.32  1.39e6         54615. Oceania  
## 10 Austria              9006398   82409  109.    4.46e5         49555. Europe   
## # … with 175 more rows
  1. 一人当たりGDP (GDP_per_capita)の平均値とデータ内の国家数を大陸 (Continet)ごとに計算し、計算結果をSES_Summary1という名のオブジェクトとして格納する。国家数の列名はN、一人当たりGDPの平均値はGDP_per_capitaとする。
SES_Summary1 <- SES_df %>%
    group_by(Continent) %>%
    summarise(N              = n(),
              GDP_per_capita = mean(GDP_per_capita, na.rm = TRUE),
              .groups        = "drop")
  1. SES_Summary1を出力する。
SES_Summary1
## # A tibble: 5 x 3
##   Continent     N GDP_per_capita
##   <chr>     <int>          <dbl>
## 1 Africa       54          2514.
## 2 America      36         12527.
## 3 Asia         42         13168.
## 4 Europe       49         35575.
## 5 Oceania       4         26578.
  1. SES_Summary1を用い、棒グラフを作成する。横軸は大陸名、縦軸は一人当たりGDPとする。
    • 横軸のラベルは「Continent」、縦軸のラベルは「Mean of GDP per capita (USD)」とする。
SES_Summary1 %>%
    ggplot() +
    geom_bar(aes(x = Continent, y = GDP_per_capita), stat = "identity") +
    labs(x = "Continent", y = "Mean of GDP per capita (USD)")


2. Countries_HDI.csvの処理と可視化

  1. Countries_HDI.csvファイルを読み込み、HDI_dfという名のオブジェクトに格納する。
    • Ranking: 人間開発指数ランキング
    • Country: 国名
    • HDI: 2018年人間開発指数
    • Life_expectancy_at_birth: 期待寿命
    • Expected_yrs_of_schooling: 期待教育年数
    • Mean_yrs_of_schooling: 平均教育年数
    • GNI_per_capita: 国民総所得(100万米ドル)
HDI_df <- read_csv("Data/Countries_HDI.csv")
  1. SES_dfHDI_dfを結合し、Country_dfという名のオブジェクトに格納する。キーはCountry変数である。
    • SES_dfには185カ国、HDI_dfには179カ国のデータが入っている。Country_dfは185カ国データになるようにすること。
Country_df <- left_join(SES_df, HDI_df, by = "Country")
  1. Country_dfの変数名を出力する。
names(Country_df)
##  [1] "Country"                   "Population"               
##  [3] "Area"                      "Density"                  
##  [5] "GDP"                       "GDP_per_capita"           
##  [7] "Continent"                 "Ranking"                  
##  [9] "HDI"                       "Life_expectancy_at_birth" 
## [11] "Expected_yrs_of_schooling" "Mean_yrs_of_schooling"    
## [13] "GNI_per_capita"
  1. Country_dfからMean_yrs_of_schoolingGIN_per_capita変数を除外する。
  2. Expected_yrs_of_schoolingLife_expectancy_at_birthの変数名をそれぞれEducationLifeに変更する。
Country_df <- Country_df %>%
  select(Country:HDI, -Ranking,
         Life = Life_expectancy_at_birth, 
         Education = Expected_yrs_of_schooling)
  1. 修正済みのCountry_dfの中身を出力する。
Country_df
## # A tibble: 185 x 10
##    Country Population   Area Density    GDP GDP_per_capita Continent   HDI  Life
##    <chr>        <dbl>  <dbl>   <dbl>  <dbl>          <dbl> <chr>     <dbl> <dbl>
##  1 Afghan…   38928346 6.53e5   59.6  1.91e4           491. Asia      0.496  64.5
##  2 Albania    2877797 2.74e4  105.   1.53e4          5309. Europe    0.791  78.5
##  3 Algeria   43851044 2.38e6   18.4  1.70e5          3876. Africa    0.759  76.7
##  4 Andorra      77265 4.70e2  164.   3.15e3         40821. Europe    0.857  81.8
##  5 Angola    32866272 1.25e6   26.4  9.46e4          2879. Africa    0.574  60.8
##  6 Antigu…      97929 4.40e2  223.   1.73e3         17643. America   0.776  76.9
##  7 Argent…   45195774 2.74e6   16.5  4.50e5          9949. America   0.83   76.5
##  8 Armenia    2963243 2.85e4  104.   1.37e4          4614. Europe    0.76   74.9
##  9 Austra…   25499884 7.68e6    3.32 1.39e6         54615. Oceania   0.938  83.3
## 10 Austria    9006398 8.24e4  109.   4.46e5         49555. Europe    0.914  81.4
## # … with 175 more rows, and 1 more variable: Education <dbl>
  1. 期待教育年数の分布をヒストグラムで出力する。棒の枠線は白とする(color = "white")。
Country_df %>%
  ggplot() +
  geom_histogram(aes(x = Education), color = "white") +
  labs(x = "Expected Years of Schooling", y = "Number of Countries")

  1. 大陸ごとの期待寿命の箱ひげ図を作成する。fillマッピングを使用し、大陸ごとに異なる色を付けること。
Country_df %>%
  ggplot() +
  geom_boxplot(aes(x = Continent, y = Life, fill = Continent)) +
  labs(x = "Continent", y = "Life expectancy at Birth")


3. Countries_Politics.csvの処理と可視化

  1. Countries_Politics.csvファイルを読み込み、Politics_dfという名のオブジェクトに格納する。
    • Country: 国名
    • G7: G7加盟有無 (0: No / 1: Yes)
    • G20: G29加盟有無 (0: No / 1: Yes)
    • OECD: OECD加盟有無 (0: No / 1: Yes)
    • Freedom: Freedom House指数(民主主義指標の1つ)
Politics_df <- read_csv("Data/Countries_Politics.csv")
  1. G7G20OECD列の数値を足し、Developedという名の列として追加する。
Politics_df <- Politics_df %>%
  mutate(Developed = G7 + G20 + OECD)
  1. Politics_dfを出力し、Developed列が追加されたことを確認する。
Politics_df
## # A tibble: 186 x 6
##    Country                G7   G20  OECD Freedom Developed
##    <chr>               <dbl> <dbl> <dbl>   <dbl>     <dbl>
##  1 Afghanistan             0     0     0      27         0
##  2 Albania                 0     0     0      67         0
##  3 Algeria                 0     0     0      34         0
##  4 Andorra                 0     0     0      94         0
##  5 Angola                  0     0     0      32         0
##  6 Antigua and Barbuda     0     0     0      85         0
##  7 Argentina               0     1     0      85         1
##  8 Armenia                 0     0     0      53         0
##  9 Australia               0     1     1      97         2
## 10 Austria                 0     0     1      93         1
## # … with 176 more rows
  1. Developedの値が1以上なら"Developed" (先進国)、0なら"Developing" (開発途上国)へ置換する。
Politics_df <- Politics_df %>%
  mutate(Developed = ifelse(Developed >= 1, "Developed", "Developing"))
  1. Politics_dfを出力し、Developed列が修正されたことを確認する。
Politics_df
## # A tibble: 186 x 6
##    Country                G7   G20  OECD Freedom Developed 
##    <chr>               <dbl> <dbl> <dbl>   <dbl> <chr>     
##  1 Afghanistan             0     0     0      27 Developing
##  2 Albania                 0     0     0      67 Developing
##  3 Algeria                 0     0     0      34 Developing
##  4 Andorra                 0     0     0      94 Developing
##  5 Angola                  0     0     0      32 Developing
##  6 Antigua and Barbuda     0     0     0      85 Developing
##  7 Argentina               0     1     0      85 Developed 
##  8 Armenia                 0     0     0      53 Developing
##  9 Australia               0     1     1      97 Developed 
## 10 Austria                 0     0     1      93 Developed 
## # … with 176 more rows
  1. Politics_dfの列を抽出する。抽出する列はCountryFreedomDeveloped列のみてある。抽出後、Politics_dfに上書きする。
Politics_df <- Politics_df %>%
  select(Country, Freedom, Developed)
  1. Country_dfPolitics_dfを結合し、Country_dfという名のオブジェクトに上書きする。キーはCountry変数である。
    • 既存のCountry_dfには185カ国、Politics_dfには186カ国のデータが入っている。新しいCountry_dfは185カ国データになるようにすること。
Country_df <- left_join(Country_df, Politics_df, by = "Country")
  1. 新しいCountry_dfの列名のみを出力し、正しくデータが結合されたかを確認する。
names(Country_df)
##  [1] "Country"        "Population"     "Area"           "Density"       
##  [5] "GDP"            "GDP_per_capita" "Continent"      "HDI"           
##  [9] "Life"           "Education"      "Freedom"        "Developed"
  1. 散布図を作成する。横軸は民主主義指標 (Freedom)、縦軸は一人当たりGDP(GDP_per_capita)とする。
Country_df %>%
  ggplot() +
  geom_point(aes(x = Freedom, y = GDP_per_capita)) +
  labs(x = "Freedom House Score", y = "GDP per capita (USD)")

  1. 先進国と開発途上国で色分けをする。
    • colorにマッピング
Country_df %>%
  ggplot() +
  geom_point(aes(x = Freedom, y = GDP_per_capita,
                 color = Developed)) +
  labs(x = "Freedom House Score", y = "GDP per capita (USD)")