在 R Lubridate 中解析我的日期时间时出现问题
Problem parsing my date time in R Lubridate
我正在尝试解析我的日期时间,因为它一直显示“所有格式都无法解析。未找到格式。”
这些是我一直在尝试解析的时间和代码。
datetime_clean <- c("4:10 pm Sept 18, 2021", "12:06 pm Sept 18, 2021", "9:42 am Sept 18, 2021")
datetime_parse <- parse_date_time(
datetime_clean, "%I:%M %p %m/%d/%Y"
)
我们可以使用 base R
中的 as.POSIXct
。月份的格式为 %b
但有一个额外的字母,即 %b
- 表示缩写的月份名称,它是前三个字母而不是四个字母)。一种选择是使用 sub
删除第 4 个字母,并使用 %b
而不是 %m
datetime_clean <- sub("([A-Za-z]{3})[a-z]", "\1", datetime_clean)
as.POSIXct(datetime_clean, format = "%I:%M %p %b %d, %Y")
-输出
[1] "2021-09-18 16:10:00 EDT" "2021-09-18 12:06:00 EDT" "2021-09-18 09:42:00 EDT"
或 lubridate
lubridate::parse_date_time(datetime_clean, '%I:%M %p %b %d, %Y')
-输出
[1] "2021-09-18 16:10:00 UTC" "2021-09-18 12:06:00 UTC" "2021-09-18 09:42:00 UTC"
这也可以用 parsedate::parse_date
自动解析(来自没有 sub
修改的原始对象)
parsedate::parse_date(datetime_clean)
[1] "2021-09-18 16:10:00 UTC" "2021-09-18 12:06:00 UTC" "2021-09-18 09:42:00 UTC"
数据
datetime_clean <- c("4:10 pm Sept 18, 2021", "12:06 pm Sept 18, 2021" ,"9:42 am Sept 18, 2021")
我正在尝试解析我的日期时间,因为它一直显示“所有格式都无法解析。未找到格式。”
这些是我一直在尝试解析的时间和代码。
datetime_clean <- c("4:10 pm Sept 18, 2021", "12:06 pm Sept 18, 2021", "9:42 am Sept 18, 2021")
datetime_parse <- parse_date_time(
datetime_clean, "%I:%M %p %m/%d/%Y"
)
我们可以使用 base R
中的 as.POSIXct
。月份的格式为 %b
但有一个额外的字母,即 %b
- 表示缩写的月份名称,它是前三个字母而不是四个字母)。一种选择是使用 sub
删除第 4 个字母,并使用 %b
而不是 %m
datetime_clean <- sub("([A-Za-z]{3})[a-z]", "\1", datetime_clean)
as.POSIXct(datetime_clean, format = "%I:%M %p %b %d, %Y")
-输出
[1] "2021-09-18 16:10:00 EDT" "2021-09-18 12:06:00 EDT" "2021-09-18 09:42:00 EDT"
或 lubridate
lubridate::parse_date_time(datetime_clean, '%I:%M %p %b %d, %Y')
-输出
[1] "2021-09-18 16:10:00 UTC" "2021-09-18 12:06:00 UTC" "2021-09-18 09:42:00 UTC"
这也可以用 parsedate::parse_date
自动解析(来自没有 sub
修改的原始对象)
parsedate::parse_date(datetime_clean)
[1] "2021-09-18 16:10:00 UTC" "2021-09-18 12:06:00 UTC" "2021-09-18 09:42:00 UTC"
数据
datetime_clean <- c("4:10 pm Sept 18, 2021", "12:06 pm Sept 18, 2021" ,"9:42 am Sept 18, 2021")