アジアの紛争データをRのpurrrで読む

I.何をする?

Rのpurrrを用いたデータの取得と概要把握の方法を紹介します。

データは次のEast Asia (5 February 2021)です。

https://acleddata.com/curated-data-files/

II.データの読み込みと概要の把握

データを読み込みます。データはExcelで配布されています。データの取得のためには登録してKeyを取得する必要があります。登録は簡単にできて無料です。

library(tidyverse)
library(readxl)
eastAsia <- read_excel("eastAsia.xlsx")

行数と列数を取得します。列数が29列と多いことがわかります。さらに、詳しい情報が必要な場合はstr()を実行します。

dim(eastAsia)
## [1] 31628    29

Mapを使って各列のデータのタイプと重複をのぞいた件数を表示します。Mapはライブラリpurrrの関数です。Purrrはtidyverseに含まれています。

map_df()は、データ・フレームを作成するmap関数です。“.x”にパイプ演算子(%>%)の左のオブジェクト(eastAsia)が代入されます。

COUNTRYは6なので、6か国のデータが含まれていることがわかります。

eastAsia %>% map_df(~(data.frame(n_distinct = n_distinct(.x),
                                        class = class(.x))),
                           .id = "variable")
##            variable n_distinct     class
## 1               ISO          6   numeric
## 2     EVENT_ID_CNTY      31628 character
## 3  EVENT_ID_NO_CNTY      15234   numeric
## 4        EVENT_DATE       1132   POSIXct
## 5        EVENT_DATE       1132    POSIXt
## 6              YEAR          4   numeric
## 7    TIME_PRECISION          3   numeric
## 8        EVENT_TYPE          6 character
## 9    SUB_EVENT_TYPE         18 character
## 10           ACTOR1         71 character
## 11    ASSOC_ACTOR_1       2565 character
## 12           INTER1          7   numeric
## 13           ACTOR2         47 character
## 14    ASSOC_ACTOR_2        309 character
## 15           INTER2          8   numeric
## 16      INTERACTION         25   numeric
## 17           REGION          1 character
## 18          COUNTRY          6 character
## 19           ADMIN1        103 character
## 20           ADMIN2        953 character
## 21           ADMIN3          1   logical
## 22         LOCATION       2964 character
## 23         LATITUDE       2827   numeric
## 24        LONGITUDE       2923   numeric
## 25    GEO_PRECISION          3   numeric
## 26           SOURCE       4661 character
## 27     SOURCE_SCALE         22 character
## 28            NOTES      31612 character
## 29       FATALITIES          7   numeric
## 30        TIMESTAMP        326   numeric

データのある国名を取得します。

eastAsia %>% pluck("COUNTRY") %>% unique()
## [1] "China"       "Taiwan"      "Japan"       "North Korea" "South Korea"
## [6] "Mongolia"

日本のどうのようなconflictsが記録されているかを知りたいです。

上のn_distinctの数を見るとNOTESは文字(character)で31612と多く、詳しく説明されていると推測されるので、NOTESを表示します。

eastAsia %>% select(COUNTRY, NOTES) %>% filter(COUNTRY == "Japan")
## # A tibble: 4,835 x 2
##    COUNTRY NOTES                                                                
##    <chr>   <chr>                                                                
##  1 Japan   On 1 January 2018, about 400 citizens gathered on the beach at Henok…
##  2 Japan   On 1 January 2018, 10 demonstrators gathered in Chigasaki city (Kana…
##  3 Japan   On 1 January 2018, protesters gathered at Chigasaki station in Kanag…
##  4 Japan   On 1 January 2018, about 70 protesters gathered in front of the stat…
##  5 Japan   On 2 January 2018, 8 demonstrators gathered in Chigasaki city (Kanag…
##  6 Japan   On 3 January 2018, protesters gathered in front of the Diet building…
##  7 Japan   On 3 January 2018, around 40 demonstrators from No to Abe's Article …
##  8 Japan   On 3 January 2018, protesters gathered at Matsudo Station to protest…
##  9 Japan   On 3 January 2018, 16 demonstrators gathered at Sakado station of Sa…
## 10 Japan   On 3 January 2018, demonstrators gathered at Matsumoto station of Ma…
## # … with 4,825 more rows

この表示では切れますが、RStudioのコンソールで読むと、1件目は沖縄の辺野古基地建設に対する抗議行動だとわかりました。

RStudioの場合、Global Environmentでオブジェクトを開いて、データ・フレームを表示して確認することもできます。

新聞からの情報を収集していると推測しますが、人が入力しているのでしょうか?、、、今のところわかりません。

それにしても、世界のデータをこのように集めているのはすごい。さらに、無料で公開しているというは驚きです。