Rを使ってExcelファイルを読み込んでcsvファイルを出力するまで

那須野さんの記事が興味深かったので、Rでもやってみた。
takuminasuno.com

library(tidyverse) #データ操作用
library(readxl) #Excelファイルの読み込み用
library(stringi) #文字列操作用

# 列名の指定。空列は"blank"とする。
nameList <- c("age", "blank1", "blank2",
              "total_201905", "male_201905", "female_201905", "blank3",
              "total_201812", "male_201812", "female_201812",
              "total-ja_201812", "male-ja_201812", "female-ja_201812")

# Excelファイルの読み込み。読み込む個所はrangeで指定。
# index(age)の補正。空白の除去と英数の半角化。「歳」の追加。
# 数値の桁数の補正(単位を揃える)。2019年は1万倍、2018年は千倍。
dat <- read_excel("05k2-1.xls", range = "A14:M34", col_names = nameList) %>%
  select(-starts_with("blank")) %>%
  mutate(age = age %>%
           str_replace_all("[[:space:]]", "") %>%
           stri_trans_nfkc() %>%
           if_else(str_detect(., pattern="歳"), ., str_c(., "歳"))
         ) %>%
  mutate_at(vars(contains("2019")), ~.*10000) %>%
  mutate_at(vars(contains("2018")), ~.* 1000)

# 横持ちでcsv出力
write_excel_csv(dat, "output_pivotted.csv")

# 縦持ちのデータに変換
dat2 <- dat %>%
  gather(key="sex_yyyymm", value = "value", -age) %>%
  separate(sex_yyyymm, into = c("sex", "yyyymm"), sep = "_")

# 縦持ちでcsv出力
write_excel_csv(dat2, "output_unpivotted.csv")


まあ、RでもPythonでも慣れてる方で書けばいいのかな。