日付、時間関数Tips大全
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
// 2007.06.03 間瀬茂
SIZE(22){COLOR(BLUE){日付・時間関数Tips大全}}
Rには日付(date)オブジェクトを表すクラス "Date" と,日付時...
*クラス "Date" [#x876570b]
クラス "Date" は date オブジェクト(年月日)を表し,1970-01...
> (today <- Sys.Date()) # 現在の日付
[1] "2007-06-02" # 表示の際...
> str(today) # 1970/1/1...
Class 'Date' num 13666
> start <- 0; class(start) <- "Date"; start # 起点年月日
[1] "1970-01-01"
> format(today, "%d %b %Y") # 月数を文...
[1] "02 6月 2007"
> (weeks <- seq(today, len=5, by="1 week")) # 次の5日
[1] "2007-06-02" "2007-06-09" "2007-06-16" "2007-06-23" ...
> weekdays(today) # 曜日
[1] "土曜日"
> months(weeks) # 月
[1] "6月" "6月" "6月" "6月" "6月"
> as.Date(.leap.seconds) # 閏秒
[1] "1972-07-01" "1973-01-01" "1974-01-01" "1975-01-01" ...
(以下略)
> (z <- Sys.Date())
[1] "2007-06-02"
> z + 10 # 10日後
[1] "2007-06-12"
> z < c("2006-06-01", "2007-01-01", "2010-01-01") # 大...
[1] FALSE FALSE TRUE
* クラス "POSIXct", "POSIXlt","POSIXt" [#f389f5b3]
年月日時分秒を表すクラスには "POSIXct" (1970年元旦からの...
'sec' 0-61: 秒 'min' 0-59:...
'hour' 0-23: 時 'mday' 1-31:...
'mon' 0-11: 月 'year' 1900...
'wday' 0-6: 一週中の日,日曜日から始まる 'yday' 0-365...
'isdst' サマータイム(daylight saving time)フラグ.正は有...
を持つ文字列リストである "POSIXlt" の2種類がある.それぞ...
> (z <- Sys.time()) # 現在の時...
[1] "2007-05-31 21:30:45 JST"
> str(z)
'POSIXct', format: chr "2007-05-31 21:38:07"
> z - 3600 # 一時間前
[1] "2007-05-31 21:30:45 JST"
> as.POSIXlt(Sys.time(), "GMT") # GMTでの現...
[1] "2007-05-31 12:38:07 GMT"
> print(.leap.seconds) # 日本標準...
[1] "1972-07-01 09:00:00" "1973-01-01 09:00:00" "1974-01...
(途中略)
[22] "1999-01-01 09:00:00" "2006-01-01 09:00:00"
> print(.leap.seconds, tz="PST8PDT") # Seattle標...
[1] "1972-06-30 17:00:00 PDT" "1972-12-31 16:00:00 PST"
(途中略)
[23] "2005-12-31 16:00:00 PST"
* 時間差 difftime() [#uf575c93]
関数 difftime() は二つのdateもしくはdate-timeオブジェクト...
結果はクラス "difftime",時間単位を表す属性 units (units(...
date-timeオブジェクト同士の差はこの関数をオプション units...
関数 as.difftime() は数値もしくは時間差の文字列表現を "di...
"difftime" オブジェクトに対しては限定された算術演算(加減...
書式: time1 - time2
difftime(time1, time2, tz = "",
units = c("auto", "secs", "mins", "hours...
as.difftime(time, format = "%X", units="auto")
units(x), units(x) <- value
引数: time1,time2,time date, もしくは date-time オブジェ...
tz タイムゾーン.""は現在のタイムゾ...
units 時間単位を表す文字列
> (z <- Sys.time() - 3600)
[1] "2007-06-02 06:35:26 JST"
> Sys.time() - z # 丁度3600秒
Time difference of 1.000018 hours
> ISOdate(2001, 4, 26) - ISOdate(2001, 2, 26) # R1.2.2と...
Time difference of 59 days
> as.difftime(c("0:3:20", "11:23:15")) # 時間を文...
Time differences in mins
[1] 3.333333 683.250000
attr(,"tzone")
[1] ""
> (z <- as.difftime(c(0,30,60), units="mins")) 秒,分,...
Time differences in mins
[1] 0 30 60
> as.numeric(z, units="secs")
[1] 0 1800 3600
> as.numeric(z, units="hours")
[1] 0.0 0.5 1.0
> format(z)
[1] " 0 mins" "30 mins" "60 mins"
* date-timeクラスオブジェクトと文字列間の変換 [#k08f6c1b]
format(), as.character(), strftime() は date-time オブジ...
> format(Sys.time(), "%a %b %d %X %Y %Z") # date(...
[1] "土 6月 02 07時42分03秒 2007 JST"
> format(Sys.time(), "%H:%M:%OS3") # 0.1秒...
[1] "07:42:03.220"
> dates <- c("02/27/92", "02/27/92", "01/14/92") # 書式'...
> times <- c("23:03:20", "22:29:56", "01:03:30")
> strptime(paste(dates, times), "%m/%d/%y %H:%M:%S")
[1] "1992-02-27 23:03:20" "1992-02-27 22:29:56" "1992-01...
*ジュリアン通日 (Julian date) [#xa0f86d3]
計算機による日付の処理では「ジュリアン通日(Julian date)」...
> date.mmddyyyy(0) # dateパッケージの起点年月日
[1] "1/1/1960"
と起点年月日が異なること.Unix界では 1970/1/1/0:00:00} か...
注:ジュリアン通日とは,本来 BC 4713/1/1 の正午を起点とす...
*タイムゾーン [#i728473c]
当然だが,同じ日付・時間でもタイムゾーンにより異なる.異...
> ( z <- Sys.time() )
[1] "2007-06-03 22:32:06 JST"
> attributes(z)
$class
[1] "POSIXt" "POSIXct" # POSIXctオブジェクト...
> ( zz <- as.POSIXlt(z, "GMT") ) # POSIXltオブジェクト...
[1] "2007-06-03 13:32:06 GMT"
> attributes(zz)
$names
[1] "sec" "min" "hour" "mday" "mon" "year" "wda...
$class
[1] "POSIXt" "POSIXlt"
$tzone # タイムゾーン属性が...
[1] "GMT"
> (zzz <- as.POSIXlt(zz, "JST")) # タイムゾーンをJSTに...
[1] "2007-06-03 13:32:06 GMT" # タイムゾーンは依然G...
> attributes(zzz)
$names
[1] "sec" "min" "hour" "mday" "mon" "year" "wda...
$class
[1] "POSIXt" "POSIXlt"
$tzone
[1] "GMT"
> (zzzz <- as.POSIXct(zz, "JST")) # POSIXctオブジェクト...
[1] "2007-06-03 13:32:06 JST"
> attributes(zzzz)
$class
[1] "POSIXt" "POSIXct"
$tzone
[1] "JST" # タイムゾーン属性JST...
*連続する日付の生成 [#p4cb3ccb]
> seq(as.Date("2010-07-31"), as.Date("2010-08-10"), by="...
[1] "2010-07-31" "2010-08-01" "2010-08-02" "2010-08-03"...
[6] "2010-08-05" "2010-08-06" "2010-08-07" "2010-08-08"...
[11] "2010-08-10"
既出でした~
> library(chron)
> seq.dates("05/03/2002", "05/08/2002")
[1] 05/03/02 05/04/02 05/05/02 05/06/02 05/07/02 05/08/02
月日の順序はアメリカ式とイギリス式とか。文字列にしたいな...
*日付・時間用のパッケージ [#b12ebd67]
Rの貢献パッケージには chron, date, fCalendar といった日付...
as.date データをdateオブジェクトに強制変換
date.ddmmmyy Julian dateを/dd/mm/yy形式に整形
date.mdy Julian dateを月日年(曜日)文字列リストに変換
date.mmddyy Julian dateをmm/dd/yy 形式に整形
date.mmddyyyy Julian dateをmm/dd/yyyy 形式に整形
is.date Dateオブジェクト検査
mdy.date Julian dateに変換
終了行:
// 2007.06.03 間瀬茂
SIZE(22){COLOR(BLUE){日付・時間関数Tips大全}}
Rには日付(date)オブジェクトを表すクラス "Date" と,日付時...
*クラス "Date" [#x876570b]
クラス "Date" は date オブジェクト(年月日)を表し,1970-01...
> (today <- Sys.Date()) # 現在の日付
[1] "2007-06-02" # 表示の際...
> str(today) # 1970/1/1...
Class 'Date' num 13666
> start <- 0; class(start) <- "Date"; start # 起点年月日
[1] "1970-01-01"
> format(today, "%d %b %Y") # 月数を文...
[1] "02 6月 2007"
> (weeks <- seq(today, len=5, by="1 week")) # 次の5日
[1] "2007-06-02" "2007-06-09" "2007-06-16" "2007-06-23" ...
> weekdays(today) # 曜日
[1] "土曜日"
> months(weeks) # 月
[1] "6月" "6月" "6月" "6月" "6月"
> as.Date(.leap.seconds) # 閏秒
[1] "1972-07-01" "1973-01-01" "1974-01-01" "1975-01-01" ...
(以下略)
> (z <- Sys.Date())
[1] "2007-06-02"
> z + 10 # 10日後
[1] "2007-06-12"
> z < c("2006-06-01", "2007-01-01", "2010-01-01") # 大...
[1] FALSE FALSE TRUE
* クラス "POSIXct", "POSIXlt","POSIXt" [#f389f5b3]
年月日時分秒を表すクラスには "POSIXct" (1970年元旦からの...
'sec' 0-61: 秒 'min' 0-59:...
'hour' 0-23: 時 'mday' 1-31:...
'mon' 0-11: 月 'year' 1900...
'wday' 0-6: 一週中の日,日曜日から始まる 'yday' 0-365...
'isdst' サマータイム(daylight saving time)フラグ.正は有...
を持つ文字列リストである "POSIXlt" の2種類がある.それぞ...
> (z <- Sys.time()) # 現在の時...
[1] "2007-05-31 21:30:45 JST"
> str(z)
'POSIXct', format: chr "2007-05-31 21:38:07"
> z - 3600 # 一時間前
[1] "2007-05-31 21:30:45 JST"
> as.POSIXlt(Sys.time(), "GMT") # GMTでの現...
[1] "2007-05-31 12:38:07 GMT"
> print(.leap.seconds) # 日本標準...
[1] "1972-07-01 09:00:00" "1973-01-01 09:00:00" "1974-01...
(途中略)
[22] "1999-01-01 09:00:00" "2006-01-01 09:00:00"
> print(.leap.seconds, tz="PST8PDT") # Seattle標...
[1] "1972-06-30 17:00:00 PDT" "1972-12-31 16:00:00 PST"
(途中略)
[23] "2005-12-31 16:00:00 PST"
* 時間差 difftime() [#uf575c93]
関数 difftime() は二つのdateもしくはdate-timeオブジェクト...
結果はクラス "difftime",時間単位を表す属性 units (units(...
date-timeオブジェクト同士の差はこの関数をオプション units...
関数 as.difftime() は数値もしくは時間差の文字列表現を "di...
"difftime" オブジェクトに対しては限定された算術演算(加減...
書式: time1 - time2
difftime(time1, time2, tz = "",
units = c("auto", "secs", "mins", "hours...
as.difftime(time, format = "%X", units="auto")
units(x), units(x) <- value
引数: time1,time2,time date, もしくは date-time オブジェ...
tz タイムゾーン.""は現在のタイムゾ...
units 時間単位を表す文字列
> (z <- Sys.time() - 3600)
[1] "2007-06-02 06:35:26 JST"
> Sys.time() - z # 丁度3600秒
Time difference of 1.000018 hours
> ISOdate(2001, 4, 26) - ISOdate(2001, 2, 26) # R1.2.2と...
Time difference of 59 days
> as.difftime(c("0:3:20", "11:23:15")) # 時間を文...
Time differences in mins
[1] 3.333333 683.250000
attr(,"tzone")
[1] ""
> (z <- as.difftime(c(0,30,60), units="mins")) 秒,分,...
Time differences in mins
[1] 0 30 60
> as.numeric(z, units="secs")
[1] 0 1800 3600
> as.numeric(z, units="hours")
[1] 0.0 0.5 1.0
> format(z)
[1] " 0 mins" "30 mins" "60 mins"
* date-timeクラスオブジェクトと文字列間の変換 [#k08f6c1b]
format(), as.character(), strftime() は date-time オブジ...
> format(Sys.time(), "%a %b %d %X %Y %Z") # date(...
[1] "土 6月 02 07時42分03秒 2007 JST"
> format(Sys.time(), "%H:%M:%OS3") # 0.1秒...
[1] "07:42:03.220"
> dates <- c("02/27/92", "02/27/92", "01/14/92") # 書式'...
> times <- c("23:03:20", "22:29:56", "01:03:30")
> strptime(paste(dates, times), "%m/%d/%y %H:%M:%S")
[1] "1992-02-27 23:03:20" "1992-02-27 22:29:56" "1992-01...
*ジュリアン通日 (Julian date) [#xa0f86d3]
計算機による日付の処理では「ジュリアン通日(Julian date)」...
> date.mmddyyyy(0) # dateパッケージの起点年月日
[1] "1/1/1960"
と起点年月日が異なること.Unix界では 1970/1/1/0:00:00} か...
注:ジュリアン通日とは,本来 BC 4713/1/1 の正午を起点とす...
*タイムゾーン [#i728473c]
当然だが,同じ日付・時間でもタイムゾーンにより異なる.異...
> ( z <- Sys.time() )
[1] "2007-06-03 22:32:06 JST"
> attributes(z)
$class
[1] "POSIXt" "POSIXct" # POSIXctオブジェクト...
> ( zz <- as.POSIXlt(z, "GMT") ) # POSIXltオブジェクト...
[1] "2007-06-03 13:32:06 GMT"
> attributes(zz)
$names
[1] "sec" "min" "hour" "mday" "mon" "year" "wda...
$class
[1] "POSIXt" "POSIXlt"
$tzone # タイムゾーン属性が...
[1] "GMT"
> (zzz <- as.POSIXlt(zz, "JST")) # タイムゾーンをJSTに...
[1] "2007-06-03 13:32:06 GMT" # タイムゾーンは依然G...
> attributes(zzz)
$names
[1] "sec" "min" "hour" "mday" "mon" "year" "wda...
$class
[1] "POSIXt" "POSIXlt"
$tzone
[1] "GMT"
> (zzzz <- as.POSIXct(zz, "JST")) # POSIXctオブジェクト...
[1] "2007-06-03 13:32:06 JST"
> attributes(zzzz)
$class
[1] "POSIXt" "POSIXct"
$tzone
[1] "JST" # タイムゾーン属性JST...
*連続する日付の生成 [#p4cb3ccb]
> seq(as.Date("2010-07-31"), as.Date("2010-08-10"), by="...
[1] "2010-07-31" "2010-08-01" "2010-08-02" "2010-08-03"...
[6] "2010-08-05" "2010-08-06" "2010-08-07" "2010-08-08"...
[11] "2010-08-10"
既出でした~
> library(chron)
> seq.dates("05/03/2002", "05/08/2002")
[1] 05/03/02 05/04/02 05/05/02 05/06/02 05/07/02 05/08/02
月日の順序はアメリカ式とイギリス式とか。文字列にしたいな...
*日付・時間用のパッケージ [#b12ebd67]
Rの貢献パッケージには chron, date, fCalendar といった日付...
as.date データをdateオブジェクトに強制変換
date.ddmmmyy Julian dateを/dd/mm/yy形式に整形
date.mdy Julian dateを月日年(曜日)文字列リストに変換
date.mmddyy Julian dateをmm/dd/yy 形式に整形
date.mmddyyyy Julian dateをmm/dd/yyyy 形式に整形
is.date Dateオブジェクト検査
mdy.date Julian dateに変換
ページ名: