日付けデータの操作に大変便利なパッケージの紹介です。データの変更や、丸めや近似値の取得、基準値からの配列作成など大変便利なコマンドが収録されています。
本パッケージで日付に関するほとんどの操作が可能だと思います。
パッケージバージョンは1.8.0。windows 11のR version 4.1.3で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール install.packages("lubridate")
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。
#パッケージの読み込み library("lubridate") #文字列が年月日の場合:ymdコマンド #タイムゾーンを指定:tzオプション Result <- ymd("22/05/01", tz = "Asia/Tokyo") #内容確認 Result #[1] "2022-05-01 JST" #class確認 class(Result) #[1] "Date" ######## #タイムゾーンの変更:with_tzコマンド changeTZ <- with_tz(Result, "America/Chicago") #確認 changeTZ #[1] "2022-04-30 10:00:00 CDT" ######## #文字列が月日年の場合:mdyコマンド mdy("05-01-22", tz = "Asia/Tokyo") #[1] "2022-05-01 JST" ######## #文字列が日月年の場合:dmyコマンド dmy("01-05-2022", tz = "Asia/Tokyo") #[1] "2022-05-01 JST" ######## #時間付きの日付けデータを作成:XXX_hmsコマンド #XXX_hmsには「ymd_hms」,「mdy_hms」,「dmy_hms」 #年月日時分秒の並び順で使い分ける #TimeZoneの初期値は協定世界時 mdy_hms("05-01-22 0:07:30") #[1] "2022-05-01 00:07:30 UTC" #タイムゾーンを指定:tzオプション #日本時間へ変更 mdy_hms("05-01-22 0:07:30", tz = "Asia/Tokyo") #[1] "2022-05-01 00:07:30 JST" ######## ###年月日時分秒の変更##### #例の作成 TestHMS <- mdy_hms("22-05-01 0:07:30", tz = "Asia/Tokyo") #秒を操作:secondコマンド second(TestHMS) <- 10 #確認 TestHMS #[1] "2022-05-01 00:07:10 JST" #分を操作:minuteコマンド minute(TestHMS) <- 10 #確認 TestHMS #[1] "2022-05-01 00:10:10 JST" #時を操作:hourコマンド hour(TestHMS) <- 10 #確認 TestHMS #[1] "2022-05-01 10:10:10 JST" #日を操作:dayコマンド day(TestHMS) <- 10 #確認 TestHMS #[1] "2022-05-10 10:10:10 JST" #月を操作:monthコマンド month(TestHMS) <- 10 #確認 TestHMS #[1] "2022-10-10 10:10:10 JST" #年を操作:yearコマンド #year(TestHMS) <- 10 #確認 TestHMS #[1] "0010-10-10 10:10:10 LMT" #例えば日を取得 #その他コマンドも取得可能 day(TestHMS) #[1] 10 ######## #日付けデータから曜日を求める:wdayコマンド #文字データで結果を取得:labelオプション #曜日の省略表記:abbrオプション;TRUE/FALSE wday(Result, label = TRUE, abbr = FALSE, locale = "Japanese_Japan.932") #[1] 日 #Levels: 日 < 月 < 火 < 水 < 木 < 金 < 土 #英語で取得:localに"English_Japan.932"を指定 wday(Result, label = TRUE, abbr = TRUE, locale = "English_Japan.932") #[1] Sun #Levels: Sun < Mon < Tue < Wed < Thu < Fri < Sat ######## #指定した日付けデータから月のみ異なる配列を作成:monthsコマンド Result + months(0:5) #[1] "2022-05-01" "2022-06-01" "2022-07-01" "2022-08-01" "2022-09-01" "2022-10-01" ######## #指定した日付けの丸め、近似を取得:round_date,floor_date,ceiling_dateコマンド #データの種類を指定:unitオプション; #"second","minute","hour","day","week","month","year","quarter"が指定可能 #例えばfloor_dateコマンド UnitVec <- c("second", "minute", "hour", "day", "week", "month", "year", "quarter") for(i in seq(UnitVec)){ print(paste0("unit = ", UnitVec[i])) print(floor_date(mdy_hms("05-01-22 0:07:15", tz = "Asia/Tokyo"), unit = UnitVec[i])) } #[1] "unit = second" #[1] "2022-05-01 00:07:15 JST" #[1] "unit = minute" #[1] "2022-05-01 00:07:00 JST" #[1] "unit = hour" #[1] "2022-05-01 JST" #[1] "unit = day" #[1] "2022-05-01 JST" #[1] "unit = week" #[1] "2022-05-01 JST" #[1] "unit = month" #[1] "2022-05-01 JST" #[1] "unit = year" #[1] "2022-01-01 JST" #[1] "unit = quarter" #[1] "2022-04-01 JST" ######## #インターバルデータの作成:intervalコマンド IntervalData <- interval(start = ymd("22/05/01", tz = "Asia/Tokyo"), end = ymd("22/06/01", tz = "Asia/Tokyo")) #確認 IntervalData #[1] 2022-05-01 JST--2022-06-01 JST ######## ###インターバルデータの操作##### #開始日付の取得:int_startコマンド int_start(IntervalData) #[1] "2022-05-01 JST" #終了日付の取得:int_endコマンド int_end(IntervalData) #[1] "2022-06-01 JST" #開始と終了の日付を入れ替える:int_flipコマンド int_flip(IntervalData) #[1] 2022-06-01 JST--2022-05-01 JST ##データをduration classに変換して期間を計算 #変換:as.durationコマンド TestDuration <- as.duration(IntervalData) #確認 TestDuration #[1] "2678400s (~4.43 weeks)" #期間日数 as.numeric(TestDuration, "days") #[1] 31 #日付の操作:int_shift,durationコマンド #durationで操作できる情報 #year,month,days,hour,minute,second int_shift(IntervalData, duration(days = -11, minute = 1.5, month = 7, year = 1)) #[1] 2023-11-19 07:31:30 JST--2023-12-20 07:31:30 JST ########
少しでも、あなたの解析が楽になりますように!!