我有一个列的时间戳从一个种族;时间的日志是鉴于无论是在HH:MM:SS格式或MM:SS格式。 我需要把他们从字到时的格式;我将使用。POSIXct但首先我有问题处理的意见,其格式是MM:SS而不是HH:MM:SS。 当我申请。POSIXct柱,我得到一个错误,因为所有的意见不具有相同的格式。 我怎么添加"00:"导致"59:34"时间戳?
时间 "59:34" "32:07" "1:08:06"
我有一个列的时间戳从一个种族;时间的日志是鉴于无论是在HH:MM:SS格式或MM:SS格式。 我需要把他们从字到时的格式;我将使用。POSIXct但首先我有问题处理的意见,其格式是MM:SS而不是HH:MM:SS。 当我申请。POSIXct柱,我得到一个错误,因为所有的意见不具有相同的格式。 我怎么添加"00:"导致"59:34"时间戳?
时间 "59:34" "32:07" "1:08:06"
基R选择-
x <- c("59:34", "32:07", "1:08:06")
as.POSIXct(ifelse(nchar(x) > 5, x, paste0('00:', x)), format = '%T', tz = 'UTC')
#[1]"2021-11-24 00:59:34 UTC" "2021-11-24 00:32:07 UTC" "2021-11-24 01:08:06 UTC"
由于没有日期的数据 as.POSIXct
追加今天的日期。
format
是用来提供输入格式的数据。 as.POSIXct
希望 YYYY-MM-DD HH:MM:SS
格式,但由于我们的输入是在不同的格式,我们需要指定分开。 %T
是用来当你的数据 HH:MM:SS
格式。 更多的细节不同的格式 ?strptime
. 这里有一个解决方案的使用 lubridate::hms
. 如果你想要使用 as.POSIXct
代替你的代码。
它假定所有价值观都是MM:SS或HH:MM:SS.
ts1
是原始价值, ts2
附加"00:"在必要和 ts3
最终的价值观。
library(dplyr)
library(stringr)
library(lubridate)
data.frame(ts1 = c("59:34", "32:07", "1:08:06")) %>%
mutate(ts2 = ifelse(str_count(ts1, ":") == 1, paste0("00:", ts1), ts1),
ts3 = hms(ts2))
结果是:
ts1 ts2 ts3
1 59:34 00:59:34 59M 34S
2 32:07 00:32:07 32M 7S
3 1:08:06 1:08:06 1H 8M 6S
mutate()
柱 ts3
. 我 ts3 = hms(ts2)
. x的所有论点必须是数字或NA" gun
为了帮助。 代码作品的例子的数据的问题。