修正的时间格式R

0

的问题

我有一个列的时间戳从一个种族;时间的日志是鉴于无论是在HH:MM:SS格式或MM:SS格式。 我需要把他们从字到时的格式;我将使用。POSIXct但首先我有问题处理的意见,其格式是MM:SS而不是HH:MM:SS。 当我申请。POSIXct柱,我得到一个错误,因为所有的意见不具有相同的格式。 我怎么添加"00:"导致"59:34"时间戳?

时间 "59:34" "32:07" "1:08:06"

r
2021-11-24 05:12:40
2

最好的答案

3

基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 追加今天的日期。

2021-11-24 05:55:51

有趣的。 我已经尝试,第二线提供的在这里。 但w/出的格式和时区。 什么格式做什么?
Père Noël

format 是用来提供输入格式的数据。 as.POSIXct 希望 YYYY-MM-DD HH:MM:SS 格式,但由于我们的输入是在不同的格式,我们需要指定分开。 %T 是用来当你的数据 HH:MM:SS 格式。 更多的细节不同的格式 ?strptime.
Ronak Shah
2

这里有一个解决方案的使用 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
2021-11-24 05:35:25

我有一个微小的问题;最后一个晚上的代码的工作只是好的,但今天我得到这个错误:"错误:问题 mutate()ts3. 我 ts3 = hms(ts2). x的所有论点必须是数字或NA"
Père Noël

枪<数据。框架(ts1=男性。数据$枪。Tim)%>%变异(ts2=ifelse(str_count(ts1、":")==1,paste0("00:",ts1),ts1)、ts3=英国皇家海军舰艇(ts2))<<<这是我建立了我的码;枪。蒂姆是我的时间矢量。
Père Noël

将需要看数据 gun 为了帮助。 代码作品的例子的数据的问题。
neilfws

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................