當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R lubridate ymd 解析包含年、月、日組件的日期


將存儲在字符和數字向量中的日期轉換為 Date 或 POSIXct 對象(請參閱 tz 參數)。這些函數可以識別任意非數字分隔符以及無分隔符。隻要格式順序正確,即使輸入向量包含不同格式的日期,這些函數也能正確解析日期。請參閱示例。

用法

ymd(
  ...,
  quiet = FALSE,
  tz = NULL,
  locale = Sys.getlocale("LC_TIME"),
  truncated = 0
)

ydm(
  ...,
  quiet = FALSE,
  tz = NULL,
  locale = Sys.getlocale("LC_TIME"),
  truncated = 0
)

mdy(
  ...,
  quiet = FALSE,
  tz = NULL,
  locale = Sys.getlocale("LC_TIME"),
  truncated = 0
)

myd(
  ...,
  quiet = FALSE,
  tz = NULL,
  locale = Sys.getlocale("LC_TIME"),
  truncated = 0
)

dmy(
  ...,
  quiet = FALSE,
  tz = NULL,
  locale = Sys.getlocale("LC_TIME"),
  truncated = 0
)

dym(
  ...,
  quiet = FALSE,
  tz = NULL,
  locale = Sys.getlocale("LC_TIME"),
  truncated = 0
)

yq(..., quiet = FALSE, tz = NULL, locale = Sys.getlocale("LC_TIME"))

ym(..., quiet = FALSE, tz = NULL, locale = Sys.getlocale("LC_TIME"))

my(..., quiet = FALSE, tz = NULL, locale = Sys.getlocale("LC_TIME"))

參數

...

可疑日期的字符或數字向量

quiet

合乎邏輯的。如果是 TRUE ,函數將在不顯示常規消息的情況下進行計算。

tz

時區指示器。如果NULL(默認),則返回 Date 對象。否則,時區屬性設置為 tz 的 POSIXct 。

locale

要使用的區域設置,請參閱locales。在 Linux 係統上,您可以使用 system("locale -a") 列出所有已安裝的區域設置。

truncated

整數。可以截斷的格式數。

如果 tz 參數不是 NULL,則為 POSIXct 類向量;如果 tz 為 NULL(默認),則為 Date 類

細節

在異構日期格式的情況下,ymd() 係列根據輸入向量的子集猜測格式。如果輸入向量包含許多缺失值或非日期字符串,則子集可能不包含有意義的日期,並且不會猜測日期時間格式,從而導致 All formats failed to parse 錯誤。在這種情況下,請參閱parse_date_time()以獲得更靈活的解析接口。

如果 truncated 參數非零,ymd() 函數還會檢查截斷的格式。例如, ymd()truncated = 2 也會解析不完整的日期,例如 2012-062012

注意:ymd()函數族基於parse_date_time()因此直接將數字月份放入內部 C 解析器,但使用base::strptime()按字母順序排列的月份。這意味著一些base::strptime()的限製繼承於潤滑的解析器。例如,截斷的格式(如%Y-%b) 不會被解析。數字截斷格式(例如%Y-%m)正確處理潤滑的 C 解析器。

從 1.3.0 版本開始,潤滑的解析函數不再返回顯示它們用於解析輸入的格式的消息。您可以通過設置來更改此設置lubridate.verbose選項TRUEoptions(lubridate.verbose = TRUE).

也可以看看

parse_date_time() 用於更靈活的低級機製。

例子

x <- c("09-01-01", "09-01-02", "09-01-03")
ymd(x)
#> [1] "2009-01-01" "2009-01-02" "2009-01-03"
x <- c("2009-01-01", "2009-01-02", "2009-01-03")
ymd(x)
#> [1] "2009-01-01" "2009-01-02" "2009-01-03"
ymd(090101, 90102)
#> [1] "2009-01-01" "2009-01-02"
now() > ymd(20090101)
#> [1] TRUE
## TRUE
dmy(010210)
#> [1] "2010-02-01"
mdy(010210)
#> [1] "2010-01-02"

yq('2014.2')
#> [1] "2014-04-01"

## heterogeneous formats in a single vector:
x <- c(20090101, "2009-01-02", "2009 01 03", "2009-1-4",
       "2009-1, 5", "Created on 2009 1 6", "200901 !!! 07")
ymd(x)
#> [1] "2009-01-01" "2009-01-02" "2009-01-03" "2009-01-04" "2009-01-05"
#> [6] "2009-01-06" "2009-01-07"

## What lubridate might not handle:

## Extremely weird cases when one of the separators is "" and some of the
## formats are not in double digits might not be parsed correctly:
if (FALSE) ymd("201002-01", "201002-1", "20102-1")
dmy("0312-2010", "312-2010")
#> Warning:  1 failed to parse.
#> [1] "2010-12-03" NA          
源代碼:R/parse.r

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Parse dates with year, month, and day components。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。