Rで解析:日付けを意味する文字列を簡単にPOSIXct classへ変換!!「fasttime」パッケージ

Rの解析に役に立つ記事

日付けを意味する文字列を簡単にPOSIXct classへ変換するパッケージの紹介です。年月日の区切る「ハイフン」「ピリオド」「アンダーバー」などの文字がなくとも年の文字数を設定することで対応が可能です。

パッケージバージョンは1.1-0。実行コマンドはwindows 11のR version 4.1.3で確認しています。

スポンサーリンク
スポンサーリンク

パッケージのインストール

下記、コマンドを実行してください。

#パッケージのインストール
install.packages("fasttime")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("fasttime")

###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
TimeChr <- tibble(TimeData = c("2022-03-17 09:35", "22/03/17, the time is 9:35",
                               "2022-03-17T09:35:45Z", "22_03_17_09_15",
                               "2203171015"))
#確認
TimeChr
# A tibble: 4 x 1
#  TimeData                  
#  <chr>                     
#1 2022-03-17 09:35          
#2 22/03/17, the time is 9:35
#3 2022-03-17T09:35:45Z  
#4 22_03_17_09_15             
#5 2203171015
########

#文字列をPOSIXct classへ変換:fastPOSIXctコマンド
#タイムゾーンを指定:tzオプション
#年を示す文字数を指定:fixedオプション;文字区切りがある場合はNAを設定
##データ例では「fixedオプション」を指定しないと最後尾はNA
TimeChr %>%
  mutate(Time_POSIXct = fastPOSIXct(TimeData, tz = "GMT"))
# A tibble: 4 x 2
#  TimeData                   Time_POSIXct       
#  <chr>                      <dttm>             
#1 2022-03-17 09:35           2022-03-17 18:35:00
#2 22/03/17, the time is 9:35 2022-03-17 18:35:00
#3 2022-03-17T09:35:45Z       2022-03-17 18:35:45
#4 22_03_17_09_15             2022-03-17 09:15:00
#5 2203171015                 NA        

#fixedオプションを追加する
TimeChr %>%
  mutate(Time_POSIXct = fastPOSIXct(TimeData, tz = "GMT")) %>%
  mutate(Time_POSIXct2 = if_else(is.na(Time_POSIXct),
                                fastPOSIXct(TimeData, tz = "GMT", fixed = 2),
                                Time_POSIXct))
# A tibble: 5 x 3
#  TimeData                   Time_POSIXct        Time_POSIXct2      
#  <chr>                      <dttm>              <dttm>             
#1 2022-03-17 09:35           2022-03-17 09:35:00 2022-03-17 09:35:00
#2 22/03/17, the time is 9:35 2022-03-17 09:35:00 2022-03-17 09:35:00
#3 2022-03-17T09:35:45Z       2022-03-17 09:35:45 2022-03-17 09:35:45
#4 22_03_17_09_15             2022-03-17 09:15:00 2022-03-17 09:15:00
#5 2203171015                 NA                  2022-03-17 10:15:00

少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました