我有這樣的日期時間字串“2021 年 11 月 25 日 802 PM”。對你和我來說,晚上 8 點過 2 分鐘。Python的datetime也沒有問題。
>>> import datetime
>>> datetime.datetime.strptime("25 November, 2021 802 PM", "%d %B, %Y %I%M %p")
datetime.datetime(2021, 11, 25, 20, 2)
我需要在 R 中做到這一點。
我試過這個:
> lubridate::parse_date_time("25 November, 2021 802 PM",
orders = '%d %B, %Y %I%M %p',
exact = T, truncated = T)
[1] NA
Warning message:
1 failed to parse.
只是為了表明我的 lubridate 代碼還不錯,這里有一個確實回傳結果的替代方法:
> lubridate::parse_date_time("25 November, 2021 102 PM", orders = '%d %B, %Y %I%M %p', exact = T, truncated = T)
[1] "2021-11-25 22:02:00 UTC"
正如我們所看到的,102被拆分為10(小時)和2(分鐘),而應該是1(小時)和02(分鐘)。
R's 也是如此strptime。
> strptime("25 November, 2021 102 PM", format = '%d %B, %Y %I%M %p')
[1] "2021-11-25 22:02:00 GMT"
有沒有辦法讓 R 決議823 PM為 20:23 和123 PM13:23 等?
更正:Python 似乎datetime也不能正常作業。它按上面示例的要求作業,但不會按其他示例的要求作業,例如
>>> import datetime
>>> datetime.datetime.strptime("25 November, 2021 102 PM", "%d %B, %Y %I%M %p")
datetime.datetime(2021, 11, 25, 22, 2)
uj5u.com熱心網友回復:
關鍵是在小時和分鐘之間放置一個冒號分隔符。
在基礎 R 中,這可以通過以下方式完成:
as.POSIXct(sub('([0-9]{2} [AP]M)', ':\\1', datetimes), format = '%d %B, %Y %I:%M %p')
uj5u.com熱心網友回復:
時間部分必須采用 0102 (HHMM) 格式才能使用%I%M,例如
str_12
[1] "25 November, 2021 102 PM"
frmt_time <- function(str){
str_tmp <- unlist(strsplit(str," "))
str_n <- paste0(
c(str_tmp[1:3],
ifelse(str_tmp[4]<4,
paste0(0,str_tmp[4]),
str_tmp[4] ),
str_tmp[5]),
collapse=" " )
as.POSIXct(str_n, format="%d %B, %Y %I%M %p")
}
frmt_time(str_12)
[1] "2021-11-25 13:02:00 CET"
uj5u.com熱心網友回復:
鑒于我所有的日期時間字串都有一個共同的形式,并且正如@Andre Wildberg 所回答的那樣,沒有辦法將類似的東西102決議為 1:02,但是如果我們這樣做了1-02or 1:02,我們會沒事的,那么這是我的解決方案。主要是在 3 位或 4 位小時-分鐘字串的最后兩位數字之前放置一個冒號:
library(tidyverse)
library(lubridate)
library(stringr)
c("26 November, 2021 136 PM",
"26 November, 2021 415 AM",
"26 November, 2021 1209 PM",
"22 November, 2021 211 PM",
"25 November, 2021 732 PM") %>%
str_replace("(.*), ([0-9]{4}) ([12]*[0-9])([0-5][0-9]) (.*)",
"\\1 \\2, \\3:\\4 \\5") %>%
parse_date_time("d m y, H:M %p")
#> [1] "2021-11-26 13:36:00 UTC" "2021-11-26 04:15:00 UTC"
#> [3] "2021-11-26 12:09:00 UTC" "2021-11-22 14:11:00 UTC"
#> [5] "2021-11-25 19:32:00 UTC"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/370523.html
