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でも慣れてる方で書けばいいのかな。