当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。