首页 > 解决方案 > 如何在 r 数据框中将日期时间格式“%Y-%m-%d %H:%M:%S”转换为“%Y-%m-%d %H:%M:%S.sss”?第二个分数

问题描述

我正在努力将日期时间格式转换"%Y-%m-%d %H:%M:%S""%Y-%m-%d %H:%M:%S.sss" R data.frame?请注意,我想要带有小数秒的秒数。

标签: rtimestampstrptime

解决方案


我不确定你在问什么。您可以使用例如格式化小数秒"%OS3"

?strptime

特定于 R 的是 '%OSn',它对于输出给出截断为 '0 <= n <= 6' 小数位的秒数(如果 '%OS' 后面没有数字,它使用 'getOption( "digits.secs")',或者如果未设置,则为 'n = 0')。此外,对于“strptime”,“%OS”将输入秒数,包括小数秒。请注意,'%S' 不会读取输出中的小数部分。

例子:

ss <- "2018-08-22 21:30:00.5"
format(as.POSIXct(ss, format = "%Y-%m-%d %H:%M:%OS"), format = "%Y-%m-%d %H:%M:%OS3")
#[1] "2018-08-22 21:30:00.500"

或样品data.frame

df <- data.frame(
    date = c("2018-08-22 21:30:00", "2018-08-22 22:00:00", "2018-08-22 22:30:00"))
transform(df, new.date = format(
    as.POSIXct(date, format = "%Y-%m-%d %H:%M:%OS"), 
    format = "%Y-%m-%d %H:%M:%OS3"))
#    date                new.date
#1 2018-08-22 21:30:00 2018-08-22 21:30:00.000
#2 2018-08-22 22:00:00 2018-08-22 22:00:00.000
#3 2018-08-22 22:30:00 2018-08-22 22:30:00.000

推荐阅读