r语言 - 可以在 as 中使用 "May 17, 2017"、"17/5/2017" 或 "17-5-17 05:24:39" 等格式。噗嗤?



我刚刚读到POSIXltPOSIXct之间的区别,据说POSIXlt是一种混合文本和字符格式;1985年5月6日"1990-9-1";或";2012年1月20日";。当我尝试这种事情时,我会得到一个错误

as.POSIXlt("May, 6 1985")
# character string is not in a standard unambiguous format

(如何(我们可以用上面引用的格式向POSIXlt提供日期?这里有消息来源说这种格式有效(如果我做对的话(:1,2。

有关指定时间格式的所有详细信息,请阅读?strptime。在这种情况下,您需要%b(表示月份名称(、%d(日期(和%Y(4位年份(。(这只适用于英语区域设置,因为月份名称是特定于区域设置的。(

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日。

最新更新