サーチ…


構文

  • ymd_hms(...、quiet = FALSE、tz = "UTC"、ロケール= Sys.getlocale( "LC_TIME"))
  • 今すぐ(tzone = "")
  • 間隔(開始、終了、tzone = attr(開始、 "tzone"))
  • 期間(num = NULL、units = "seconds"、...)
  • 期間(num = NULL、units = "second"、...)

備考

CRANからパッケージをインストールするには

install.packages("lubridate")

Githubから開発版をインストールするには:

library(devtools)
# dev mode allows testing of development packages in a sandbox, without interfering
# with the other packages you have installed.
dev_mode(on=T)
install_github("hadley/lubridate")
dev_mode(on=F)

lubridateパッケージのビネットを取得するには:

vignette("lubridate")

関数fooに関する助けを得るには:

help(foo)     # help about function foo
?foo          # same thing

# Example
# help("is.period")
# ?is.period

関数foo例を得るには:

example("foo")

# Example
# example("interval")

潤滑剤付きの文字列からの日付と日付時刻の解析

lubridateパッケージは、文字列から日付オブジェクトと日時オブジェクトを整形する便利な機能を提供します。関数は

文字解析する要素ベースR相当
y %y%Y
m(yとdを含む) %m%b%h%B
d %d%e
h 時間 %H%I%p
m(hとs) %M
s %S

年、月、日、時、分などの順序で日付時刻を解析する場合は、 ymd()を使用して、年と日付の後に月を続けて解析しますymd_hms()例: "2016-07-22"またはymd_hms()秒(例: "2016-07-22 13:04:47"

関数は、追加の引数なしで、ほとんどのセパレータ( /- 、空白など)を認識できます。また、一貫性のないセパレータでも動作します。


日付

date関数はDateクラスのオブジェクトを返します。

library(lubridate) 

mdy(c(' 07/02/2016 ', '7 / 03 / 2016', ' 7 / 4 / 16 '))
## [1] "2016-07-02" "2016-07-03" "2016-07-04"

ymd(c("20160724","2016/07/23","2016-07-25"))    # inconsistent separators
## [1] "2016-07-24" "2016-07-23" "2016-07-25"

Datetimes

ユーティリティ関数

日付時刻を使用して解析することができるymd_hms含むバリアントymd_hmymd_h 。すべてのdatetime関数は、 as.POSIXctまたはstrptimeようなtzタイムゾーン引数を受け入れることができますが、ローカルタイムゾーンではなく"UTC"にデフォルト設定されています。

datetime関数は、 POSIXctクラスのオブジェクトを返します。

x <- c("20160724 130102","2016/07/23 14:02:01","2016-07-25 15:03:00")
ymd_hms(x, tz="EST")
## [1] "2016-07-24 13:01:02 EST" "2016-07-23 14:02:01 EST"
## [3] "2016-07-25 15:03:00 EST"

ymd_hms(x)
## [1] "2016-07-24 13:01:02 UTC" "2016-07-23 14:02:01 UTC"
## [3] "2016-07-25 15:03:00 UTC"

パーサ関数

lubridateには、 as.POSIXctstrptimeような書式指定文字列を使ってdatetimeを解析する3つの関数も含まれています:

関数出力クラス受け入れた文字列の書式設定
parse_date_time POSIXct フレキシブル。受け入れるstrptimeでスタイルを%またはlubridate日時関数名のスタイル、たとえば"ymd hms" 。異機種データの注文ベクトルを受け入れ、適切であると推測します。
parse_date_time2 デフォルトのPOSIXct。 lt = TRUE場合、POSIXlt 厳しい制限付きセットからのstrptimeトークン( %付きまたはなし)のみを受け入れます。
fast_strptime デフォルトPOSIXlt; lt = FALSE 、POSIXctのlt = FALSE 厳しいのみ受け付け% -delimited strptime (デリミタ付きトークン- /:限定されたセットから、など)。
x <- c('2016-07-22 13:04:47', '07/22/2016 1:04:47 pm')

parse_date_time(x, orders = c('mdy Imsp', 'ymd hms'))
## [1] "2016-07-22 13:04:47 UTC" "2016-07-22 13:04:47 UTC"

x <- c('2016-07-22 13:04:47', '2016-07-22 14:47:58')

parse_date_time2(x, orders = 'Ymd HMS')
## [1] "2016-07-22 13:04:47 UTC" "2016-07-22 14:47:58 UTC"

fast_strptime(x, format = '%Y-%m-%d %H:%M:%S')
## [1] "2016-07-22 13:04:47 UTC" "2016-07-22 14:47:58 UTC"

parse_date_time2fast_strptimeは効率のために高速なCパーサを使用します。

トークンをフォーマットするには?parse_date_timeを参照してください。

lubridateの日付と時刻の解析

Lubridateは、文字列を日付に解析するための関数ymd()提供します。文字y、m、およびdは、日時の年、月、日の各要素に対応します。

mdy("07-21-2016")                 # Returns Date

## [1] "2016-07-21"

mdy("07-21-2016", tz = "UTC")     # Returns a vector of class POSIXt

## "2016-07-21 UTC"

dmy("21-07-2016")                 # Returns Date

## [1] "2016-07-21"

dmy(c("21.07.2016", "22.07.2016")) # Returns vector of class Date

## [1] "2016-07-21" "2016-07-22"

lubridateの日付と時刻の操作

date <- now()
date
## "2016-07-22 03:42:35 IST"

year(date)
## 2016

minute(date)
## 42

wday(date, label = T, abbr = T)
# [1] Fri
# Levels: Sun < Mon < Tues < Wed < Thurs < Fri < Sat

day(date) <- 31
## "2016-07-31 03:42:35 IST"

# If an element is set to a larger value than it supports, the difference
#  will roll over into the next higher element
day(date) <- 32
## "2016-08-01 03:42:35 IST"

インスタント

瞬間は特定の瞬間です。ある瞬間を参照する任意の日時オブジェクトは瞬間として認識されます。オブジェクトが瞬間かどうかをテストするには、 is.instant使用しis.instant

library(lubridate)

today_start <- dmy_hms("22.07.2016 12:00:00", tz = "IST") # default tz="UTC"
today_start
## [1] "2016-07-22 12:00:00 IST"
is.instant(today_start)
## [1] TRUE

now_dt <- ymd_hms(now(), tz="IST")
now_dt
## [1] "2016-07-22 13:53:09 IST"
is.instant(now_dt)
## [1] TRUE

is.instant("helloworld")
## [1] FALSE
is.instant(60)
## [1] FALSE

間隔、期間および期間

インターバルは、潤滑油中のタイムパンを記録する最も簡単な方法です。間隔は、2つの特定の瞬間の間に生じる時間のスパンです。

# create interval by substracting two instants
today_start <- ymd_hms("2016-07-22 12-00-00", tz="IST")
today_start
## [1] "2016-07-22 12:00:00 IST"
today_end <- ymd_hms("2016-07-22 23-59-59", tz="IST")
today_end
## [1] "2016-07-22 23:59:59 IST"
span <- today_end - today_start
span
## Time difference of 11.99972 hours
as.interval(span, today_start)
## [1] 2016-07-22 12:00:00 IST--2016-07-22 23:59:59 IST

# create interval using interval() function
span <- interval(today_start, today_end)
[1] 2016-07-22 12:00:00 IST--2016-07-22 23:59:59 IST

持続時間は、2つの瞬間間に生じる正確な時間量を測定します。

duration(60, "seconds")
## [1] "60s"

duration(2, "minutes")
## [1] "120s (~2 minutes)"

注:週単位を超える単位は、その変動性のために使用されません。

期間は使用して作成することができdsecondsdminutesおよびその他の期間のヘルパー関数を。
完全なリストについては、 ?quick_durationsを実行して?quick_durations

dseconds(60)
## [1] "60s"

dhours(2)
## [1] "7200s (~2 hours)"

dyears(1)
## [1] "31536000s (~365 days)"

期間を減算して瞬間に追加して、新しい瞬間を得ることができます。

today_start + dhours(5)
## [1] "2016-07-22 17:00:00 IST"

today_start + dhours(5) + dminutes(30) + dseconds(15)
## [1] "2016-07-22 17:30:15 IST"

期間は間隔で作成できます。

as.duration(span)
[1] "43199s (~12 hours)"

期間は、2つのインスタント間で発生するクロック時間の変化を測定します。

期間は、 period機能、 secondshoursなどの他のヘルパー機能を使用して作成することができます。期間ヘルパー機能の完全なリストを取得するには、 ?quick_periods実行し?quick_periods

period(1, "hour")
## [1] "1H 0M 0S"

hours(1)
## [1] "1H 0M 0S"

period(6, "months")
## [1] "6m 0d 0H 0M 0S"

months(6)
## [1] "6m 0d 0H 0M 0S"

years(1)
## [1] "1y 0m 0d 0H 0M 0S"

is.period関数を使用して、オブジェクトがピリオドであるかどうかを調べることができます。

is.period(years(1))
## [1] TRUE

is.period(dyears(1))    
## [1] FALSE

丸めの日付

now_dt <- ymd_hms(now(), tz="IST")
now_dt
## [1] "2016-07-22 13:53:09 IST"

round_date()は、日時オブジェクトを取得し、指定された時間単位の最も近い整数値に丸めます。

round_date(now_dt, "minute")
## [1] "2016-07-22 13:53:00 IST"

round_date(now_dt, "hour")
## [1] "2016-07-22 14:00:00 IST"

round_date(now_dt, "year")
## [1] "2017-01-01 IST"

floor_date()は日時オブジェクトをとり、指定された時間単位の最も近い整数値に丸めます。

floor_date(now_dt, "minute")
## [1] "2016-07-22 13:53:00 IST"

floor_date(now_dt, "hour")
## [1] "2016-07-22 13:00:00 IST"

floor_date(now_dt, "year")
## [1] "2016-01-01 IST"

ceiling_date()は、日時オブジェクトを取得し、指定された時間単位の最も近い整数値に丸めます。

ceiling_date(now_dt, "minute")
## [1] "2016-07-22 13:54:00 IST"

ceiling_date(now_dt, "hour")
## [1] "2016-07-22 14:00:00 IST"

ceiling_date(now_dt, "year")
## [1] "2017-01-01 IST"

期間と期間の差

期間とは異なり、うるう秒、うるう年、夏時間の変更などのイベントがいつ発生するかを知らずに、期間を正確にモデル化するために期間を使用することができます。

start_2012 <- ymd_hms("2012-01-01 12:00:00")
## [1] "2012-01-01 12:00:00 UTC"

# period() considers leap year calculations.
start_2012 + period(1, "years")
## [1] "2013-01-01 12:00:00 UTC"

# Here duration() doesn't consider leap year calculations. 
start_2012 + duration(1)
## [1] "2012-12-31 12:00:00 UTC"

時間帯

with_tzは、異なるタイムゾーンに表示される日時を返します。

nyc_time <- now("America/New_York")
nyc_time
## [1] "2016-07-22 05:49:08 EDT"

# corresponding Europe/Moscow time
with_tz(nyc_time, tzone = "Europe/Moscow")
## [1] "2016-07-22 12:49:08 MSK"

force_tzは、新しいタイムゾーンのxと同じ時計時刻を持つ日付時刻を返します。

nyc_time <- now("America/New_York")
nyc_time
## [1] "2016-07-22 05:49:08 EDT"

force_tz(nyc_time, tzone = "Europe/Moscow") # only timezone changes
## [1] "2016-07-22 05:49:08 MSK"


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow