จะแยกวิเคราะห์มิลลิวินาทีได้อย่างไร?


86

ฉันจะใช้strptimeหรือฟังก์ชั่นอื่น ๆ เพื่อแยกวิเคราะห์การประทับเวลาด้วยมิลลิวินาทีเป็น R ได้อย่างไร

time[1]
# [1] "2010-01-15 13:55:23.975"
strptime(time[1], format="%Y-%m-%d %H:%M:%S.%f")
# [1] NA
strptime(time[1], format="%Y-%m-%d %H:%M:%S")
# [1] "2010-01-15 13:55:23"`

คำตอบ:


123

ได้รับความอนุเคราะห์จาก?strptimeไฟล์ความช่วยเหลือ (โดยตัวอย่างเปลี่ยนเป็นค่าของคุณ):

 z <- strptime("2010-01-15 13:55:23.975", "%Y-%m-%d %H:%M:%OS")
 z # prints without fractional seconds
 op <- options(digits.secs=3)
 z
 options(op) #reset options

ขอบคุณฉันพลาดสิ่งนั้นในเอกสาร strptime ฉันกำลังมองหารูปแบบอักขระและล้มเลิกเมื่อฉันไม่เห็น
signalseeker

8
ถ้าฉันสามารถเป็นที่ระลึกเพื่อเป็นเกียรติแก่คุณฉันจะ!
jkff

2
ฉันก็เช่นกัน! บิต "% OS" นั้นยอดเยี่ยมมาก
Pierre D

นี่เป็นเฉพาะใน python3 หรืออะไร? ใน python2.7.8: >>> time.strptime (t, "% Y-% m-% d% H:% M:% OS") Traceback (โทรล่าสุดล่าสุด): ไฟล์ "<stdin>", บรรทัด 1 ใน <module> ไฟล์ "/opt/pythons/2.7.8/lib/python2.7/_strptime.py" บรรทัด 467 ใน _strptime_time return _strptime (data_string, format) [0] File "/ opt / pythons / 2.7.8 / lib / python2.7 / _strptime.py "บรรทัด 317 ใน _strptime (bad_directive รูปแบบ)) ValueError: 'O' เป็นคำสั่งที่ไม่ถูกต้องในรูปแบบ '% Y-% m-% d% H:% M:% OS '
firebush

1
@firebush: อยู่ใน R อาจต้องใช้ "% Y-% m-% d% H:% M:% OS3" ในบางแพลตฟอร์ม การใช้งานรูปแบบ "OS" จะระบุว่าเป็นระบบปฏิบัติการเฉพาะในหน้าความช่วยเหลือ
IRTFM

31

นอกจากนี้คุณยังสามารถใช้strptime(time[1], "%OSn")ที่ 0 <= n <= 6 digits.secsโดยไม่ต้องตั้งค่า

เอกสารระบุว่า "ข้อใดต่อไปนี้ได้รับการสนับสนุนขึ้นอยู่กับระบบปฏิบัติการ" ดังนั้น YMMV


2
สิ่งนี้ไม่ได้ผลสำหรับฉันบน Ubuntu เช่นกัน นั่นให้ผล NA
Prakash
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.