R'deki Zaman Biçimini Düzeltme

0

Soru

Bir yarıştan bir zaman damgası sütunum var; zaman günlükleri HH:MM:SS biçiminde veya MM:SS biçiminde verilir. Onları karakterden zaman biçimine dönüştürmem gerekiyor; As kullanacağım.POSIXct ama önce formatın HH:MM:SS yerine MM:SS olduğu gözlemlerle ilgili sorunlar yaşıyorum. Başvurduğumda.Sütuna POSIXct, bir hata alıyorum çünkü tüm gözlemler aynı biçime sahip değil. "59: 34 "zaman damgasına giden" 00: "değerini nasıl ekleyebilirim?

Zaman "59:34" "32:07" "1:08:06"

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

En iyi cevabı

3

Bir temel R seçeneği -

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"

Verilerde tarih olmadığı için as.POSIXct bugünün tarihini ekler.

2021-11-24 05:55:51

İlginç. Burada verdiğin ikinci satırı denedim. Ancak format ve saat dilimi dışında. Biçim ne yapar?
Père Noël

format verilerinizin içinde bulunduğu girdi biçimini sağlamak için kullanılır. as.POSIXct bekliyor YYYY-MM-DD HH:MM:SS ancak girdimiz farklı formatta olduğu için bunu ayrı ayrı belirtmemiz gerekiyor. %T verileriniz olduğunda kullanılır HH:MM:SS biçimli. Farklı formatlar hakkında daha fazla bilgi ?strptime.
Ronak Shah
2

İşte kullanarak bir çözüm lubridate::hms. Kullanmak istiyorsanız as.POSIXct, bunun için kodunuzu değiştirin.

Tüm değerlerin MM:SS veya HH::MM::SS olduğunu varsayar.

ts1 orijinal değerler mi, ts2 gerektiğinde "00:" ile önceden yazılmış ve ts3 son değerler.

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))

Sonuç:

      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

Küçük bir sorunum var; Dün gece kod gayet iyi çalıştı, ancak bugün şu hatayı alıyorum: "Hata: Sorun mutate() sütun ts3. i ts3 = hms(ts2). x Tüm bağımsız değişkenler sayısal veya NA olmalıdır"
Père Noël

silah çerçeve ( ts1 = erkek.data$Silah.Tım) %>% mutate(ts2 = ıfelse(str_count(ts1, ":") == 1, paste0("00:", ts1), ts1), ts3 = hms(ts2)) ><<Tim benim zaman vektörüm.
Père Noël

Verileri görmek gerekir gun yardımcı olmak. Kod, sorudaki örnek verilerle çalışır.
neilfws

Diğer dillerde

Bu sayfa diğer dillerde

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