R Language
Dateクラス
サーチ…
備考
関連トピック
混乱したメモ
-
Date:1970-01-01年1970-01-01UNIXエポックからの日数を1970-01-01ます。より早い日付の場合は負の値になります。 - これは整数で表されます(ただし、内部表現では強制されません)
- カレンダーはまだ使用されていませんでしたが、現在のグレゴリオ暦の規則に従って常に印刷されます。
- タイムゾーンを追跡しないので、
POSIXctオブジェクトまたはPOSIXltオブジェクトのタイムアウトを切り捨てるために使用すべきではありません。 -
sys.Date()は、Dateクラスのオブジェクトを返します。
もっとメモ
- lubridateの
ymd、mdyなどは、Dateクラスを解析するas.Date代替です。 rubridを使用した文字列からの日付と日付時刻の解析を参照してください。 - data.tableの実験的なIDateクラスは、Dateから派生したもので、ほとんどはDateと互換性がありますが、doubleではなくintegerとして格納されます。
日付の書式設定
Datesをフォーマットするには、 POSIXct ( as.POSIXct() )またはPOSIXlt ( as.POSIXlt()から与えられる)のいずれかを使用してDatesをformat(date, format="%Y-%m-%d")
d = as.Date("2016-07-21") # Current Date Time Stamp
format(d,"%a") # Abbreviated Weekday
## [1] "Thu"
format(d,"%A") # Full Weekday
## [1] "Thursday"
format(d,"%b") # Abbreviated Month
## [1] "Jul"
format(d,"%B") # Full Month
## [1] "July"
format(d,"%m") # 00-12 Month Format
## [1] "07"
format(d,"%d") # 00-31 Day Format
## [1] "21"
format(d,"%e") # 0-31 Day Format
## [1] "21"
format(d,"%y") # 00-99 Year
## [1] "16"
format(d,"%Y") # Year with Century
## [1] "2016"
詳細については、 ?strptime参照してください。
日付
変数を日付にas.Date()するには、 as.Date()関数を使用します。
> x <- as.Date("2016-8-23")
> x
[1] "2016-08-23"
> class(x)
[1] "Date"
as.Date()関数を使用すると、書式引数を指定できます。デフォルトは%Y-%m-%d 、年 - 月 - 日です。
> as.Date("23-8-2016", format="%d-%m-%Y") # To read in an European-style date
[1] "2016-08-23"
書式文字列は、一重引用符または二重引用符のペア内に置くことができます。日付は、通常、 "dm-yy"または"dm-YYYY"または"md-yy"または"md-YYYY"または"YYYY-md"または"YYYY-dm"などのさまざまな形式で表されます。これらの形式は、 "-"を"/"置き換えることによっても表現できます。 1986年11月6日、1986年11月6日、1986年11月6日、1986年11月6日などのように、日付もまた形式で表現されます。 as.Date()関数はこのような文字列をすべて受け取り、文字列の適切な書式を指定すると、常に"YYYY-md"形式で日付を出力します。
形式"%d-%m-%Y"日付文字列"9-6-1962"があるとします。
#
# It tries to interprets the string as YYYY-m-d
#
> as.Date("9-6-1962")
[1] "0009-06-19" #interprets as "%Y-%m-%d"
>
as.Date("9/6/1962")
[1] "0009-06-19" #again interprets as "%Y-%m-%d"
>
# It has no problem in understanding, if the date is in form YYYY-m-d or YYYY/m/d
#
> as.Date("1962-6-9")
[1] "1962-06-09" # no problem
> as.Date("1962/6/9")
[1] "1962-06-09" # no problem
>
入力文字列の正しい形式を指定することにより、目的の結果を得ることができます。次のコードを使用して、 as.Date()関数の形式を指定します。
| フォーマットコード | 意味 |
|---|---|
%d | 日 |
%m | 月 |
%y | 2桁の年 |
%Y | 4桁の年 |
%b | 3文字で短縮された月 |
%B | 今月のフルネーム |
formatパラメータを指定する次の例を考えてみましょう。
> as.Date("9-6-1962",format="%d-%m-%Y")
[1] "1962-06-09"
>
パラメータ名の形式は省略できます。
> as.Date("9-6-1962", "%d-%m-%Y")
[1] "1962-06-09"
>
時には、最初の3文字に短縮された月の名前は、日付を書く際に使用されます。この場合、フォーマット指定子%bを使用します。
> as.Date("6Nov1962","%d%b%Y")
[1] "1962-11-06"
>
日付文字列のメンバー間に'-'または'/'または空白のいずれもないことに注意してください。書式文字列は、その入力文字列と完全に一致する必要があります。次の例を考えてみましょう。
> as.Date("6 Nov, 1962","%d %b, %Y")
[1] "1962-11-06"
>
日付文字列にカンマがあるため、フォーマット指定のコンマもあることに注意してください。書式文字列でコンマが省略された場合は、 NAます。 %B書式指定子の使用例は次のとおりです。
> as.Date("October 12, 2016", "%B %d, %Y")
[1] "2016-10-12"
>
> as.Date("12 October, 2016", "%d %B, %Y")
[1] "2016-10-12"
>
%y形式はシステム固有のものなので、注意して使用する必要があります。この関数で使用される他のパラメータは、 originおよびtz (時間帯)です。
文字列を日付オブジェクトに解析する
Rには、文字列または文字列のベクトルをとるas.Date()で作成されたDateクラスが含まれています。日付がISO 8601の日付形式YYYY-MM-DDでない場合は、 strptime YYYY-MM-DD strptimeトークンの書式設定文字列。
as.Date('2016-08-01') # in ISO format, so does not require formatting string
## [1] "2016-08-01"
as.Date('05/23/16', format = '%m/%d/%y')
## [1] "2016-05-23"
as.Date('March 23rd, 2016', '%B %drd, %Y') # add separators and literals to format
## [1] "2016-03-23"
as.Date(' 2016-08-01 foo') # leading whitespace and all trailing characters are ignored
## [1] "2016-08-01"
as.Date(c('2016-01-01', '2016-01-02'))
# [1] "2016-01-01" "2016-01-02"