แก้ไขรูปแบบเวลาในสเปนเซอร์รี้ดครับ R

0

คำถาม

ฉันต้องเป็นคอลัมน์ของวันที่และเวลาจากการแข่งขัน;เวลาปูมบันทึกเป็นได้เหมือนกันใน HH:MM:พวกเอสเอสรูปแบบหรืออืม:พวกเอสเอสรูปแบบ ฉันต้องการจะแปลงมันออกจากตัวละครเพื่อเวลาแบบฉันจะถูกใช้เป็นPOSIXct แต่ก่อนอื่นผมมีปัญหาเรื่องกับการสังเกตอยู่ที่ไหนรูปแบบคืออืม:พวกเอสเอสมเท่า HH:MM:พวกเอสเอส ตอนที่ฉันปรับใช้เป็น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 appends todays เดทด้วย

2021-11-24 05:55:51

น่าสนใจ ฉันพยายามอนั่นที่สองเส้นคุณให้อยู่ที่นี่ แต่ทำ/ออกจากรูปแบบและเขตเวลา. อะไรที่รูปแบบทำอย่างไร?
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,รูตัวแทนของคุณรหัสสำหรับเรื่องนั้น

มันคิดเอาเองว่าทั้งค่าเป็นเหมือนกัอืม:พวกเอสเอสหรือ HH::อืม::พวกเอสเอส

ts1 เป็นดั้งเดิมค่า, ts2 ก่อน pended กับ"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 ทั้งอาร์กิวเมนต์จะต้อง numeric หรือนา"
Père Noël

ปืน<-ข้อมูลเฟรม(ts1=ผู้ชายข้อมูลที่$ปืนทิม)%>%mutate(ts2=ifelse(str_count(ts1,":")==1,paste0("00:",ts1),ts1),ts3=hms(ts2))<<<นี่คือสิ่งที่ผมสร้างของรหัส;ปืนทิมก็คือเวลาของฉันเว็กเตอร์
Père Noël

คงต้องการที่จะเห็นข้อมูลอยู่ gun เพื่อช่วย รหัสทำงานกับตัวอย่างเช่นข้อมูลอยู่ในคำถาม
neilfws

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่