"May 17, 2017"、“17/5/2017”或“17-5-17 05:24:39”之类的格式可以用在 as.POSIXlt 中吗?
Can format like "May 17, 2017", "17/5/2017" or "17-5-17 05:24:39" be used in as.POSIXlt?
我刚读到 POSIXlt
和 POSIXct
之间的区别,据说 POSIXlt 是一种混合文本和字符格式,如“May, 6 1985”、“1990-9” -1”或“1/20/2012”。当我尝试这样的事情时,我得到一个错误
as.POSIXlt("May, 6 1985")
# character string is not in a standard unambiguous format
阅读 ?strptime
以了解指定时间格式的所有详细信息。在这种情况下,您需要 %b
(月份名称)、%d
(月份日期)、%Y
(4 位数年份)。 (这仅适用于英语语言环境设置,因为月份名称为 locale-specific。)
as.POSIXlt("May, 6 1985", format = "%b, %d %Y")
如果您混合输入甲酸盐,您可以使用 lubridate
包中的 parse_date_time
。
x <- c("May, 6 1985", "1990-9-1", "1/20/2012")
y <- lubridate::parse_date_time(x, c("ymd", "mdy", "dmy"))
str(y)
# POSIXct[1:3], format: "1985-05-06" "1990-09-01" "2012-01-20"
注意 c("ymd", "mdy", "dmy")
因为这决定了先找到先转换的顺序。考虑到 6-1-2000
会在 dmy
之前遇到 mdy
有效,所以这意味着它将是 6 月 1 日而不是 1 月 6 日。
我刚读到 POSIXlt
和 POSIXct
之间的区别,据说 POSIXlt 是一种混合文本和字符格式,如“May, 6 1985”、“1990-9” -1”或“1/20/2012”。当我尝试这样的事情时,我得到一个错误
as.POSIXlt("May, 6 1985")
# character string is not in a standard unambiguous format
阅读 ?strptime
以了解指定时间格式的所有详细信息。在这种情况下,您需要 %b
(月份名称)、%d
(月份日期)、%Y
(4 位数年份)。 (这仅适用于英语语言环境设置,因为月份名称为 locale-specific。)
as.POSIXlt("May, 6 1985", format = "%b, %d %Y")
如果您混合输入甲酸盐,您可以使用 lubridate
包中的 parse_date_time
。
x <- c("May, 6 1985", "1990-9-1", "1/20/2012")
y <- lubridate::parse_date_time(x, c("ymd", "mdy", "dmy"))
str(y)
# POSIXct[1:3], format: "1985-05-06" "1990-09-01" "2012-01-20"
注意 c("ymd", "mdy", "dmy")
因为这决定了先找到先转换的顺序。考虑到 6-1-2000
会在 dmy
之前遇到 mdy
有效,所以这意味着它将是 6 月 1 日而不是 1 月 6 日。