【问题标题】:How do I change the format of a char vector containing milliseconds to timeseries vector in R如何将包含毫秒的字符向量的格式更改为 R 中的时间序列向量
【发布时间】:2016-11-22 01:18:28
【问题描述】:

我在 R 中有一个 DF,它有两个字符列。第一列是时间序列数组,第二列包含连续数字。时间序列字段以毫秒为单位记录时间。我正在尝试将此数组转换为日期数组。但是,无论我使用哪种方法进行转换,都会丢失毫秒信息。

以下是数据框:

time = c("08-08-2016 09:16:33.430","08-08-2016 09:16:37.930")
values <- c(45,21)
my_data <- data.frame(time,values)

我想保留毫秒信息。但是,当我使用以下方法转换时间字符数组时,我失去了毫秒 (O/P time array= 2016-08-08 09:16:33,08-08-2016 09:16:37) 。

my_data$time=strptime(my_data$time,format="%m-%d-%Y %H:%M:%S.%OS")

我也尝试使用 as.POSIXct、as.Date 函数但无法解析。有人可以帮忙吗?

【问题讨论】:

    标签: r time-series


    【解决方案1】:

    %OS而不是%S,不是除了它。 "%m-%d-%Y %H:%M:%OS" 是所需的格式字符串:

    options(digits.secs=6)
    as.POSIXct(my_data$time, format="%m-%d-%Y %H:%M:%OS")
    #[1] "2016-08-08 09:16:33.43 AEST" "2016-08-08 09:16:37.93 AEST"
    

    【讨论】:

      【解决方案2】:

      你有一个足够标准的格式,这样anytime 可以使用你的额外输入自动解析这个:

      R> timevec <- c("08-08-2016 09:16:33.430","08-08-2016 09:16:37.930")
      R> anytime(timevec)
      [1] "2016-08-08 09:16:33.43 CDT" "2016-08-08 09:16:37.93 CDT"
      R> 
      

      我倾向于默认设置options(digits.secs=6),这就是为什么显示屏还会显示小数秒。

      【讨论】:

      • 选项(digits.secs=6)是诀窍。那解决了。谢谢。
      猜你喜欢
      • 2013-02-21
      • 1970-01-01
      • 2021-09-09
      • 1970-01-01
      • 2021-09-01
      • 2019-04-10
      • 2019-08-31
      • 2021-11-22
      • 2011-11-08
      相关资源
      最近更新 更多