日本語の日付をRのDate形式に変換

日付ごとに感染者数を見たい場合や,ある期間に入院した人の数をカウントしたい場合など,日付データを取り扱う機会は多い. Rに問題なく読み込めるケースであれば加工は必要ないが,「2020年1月1日」というようにデータに日本語が含まれているケースもある. 今回はこの形式のデータをRas.Dateに持ち込める形に変換することを考える.いろいろな方法があるが,ここではregexpr関数を使ってみる.まずは適当に日付を用意.

Date <- c("2020年1月1日","2020年1月8日","2020年1月15日","2020年1月22日","2020年1月29日")

作った日付データをDateに格納したが,ここからregexpr関数でこのDateから「年」,「月」,「日」の位置を調べる.そうすると,1つ目の「2020年1月1日」では,5番目に「年」,7番目に「月」,9番目に「日」があり,YYMMDDの1つ目にこれらの情報が入る.substr関数はある文字列から一部を取り出す関数であり,これを使って2020という情報を取り出す.取り出したい文字列の始まりと終わりの位置を指定することで,該当する数字が切り出せる.年にあたる情報は「2020年1月1日」の1番目から4番目,つまり「年」の文字の一つ手前までなので,substr(Date, 1, (YY-1))と書けばよい.切り出した情報をYearMonthDayに格納し,paste関数で合体,as.Date関数で日付に変換する.

YY <- regexpr("年", Date)
MM <- regexpr("月", Date)
DD <- regexpr("日", Date)

Year  <- substr(Date, 1, (YY-1))
Month <- substr(Date, (YY+1), (MM-1))
Day   <- substr(Date, (MM+1), (DD-1))
YMD   <- as.Date(paste(Year, "-", Month, "-", Day, sep=""))
Date  <- data.frame(Date_Original = Date, Date_R = YMD)
print(Date)

うまくいっていれば,下のような結果が出るはず.

  Date_Original     Date_R
1  2020年1月1日 2020-01-01
2  2020年1月8日 2020-01-08
3 2020年1月15日 2020-01-15
4 2020年1月22日 2020-01-22
5 2020年1月29日 2020-01-29

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です