【问题标题】:how to convert numeric type to "seconds" in R如何在R中将数字类型转换为“秒”
【发布时间】:2016-03-05 22:55:25
【问题描述】:

我想通过这样做来创建一个时间序列数据框:

x <- xts(data$length,data$Time.Elapsed)

然后,我收到一条警告消息:

Error in xts(data$length, data$Time.Elapsed) : 
  order.by requires an appropriate time-based object

所以,我在想问题是我的“Time.Elapsed”是数字数据。那我想转换“Time.Elapsed”的数据类型,怎么实现呢?

>data$Time Elapsed
    Time Elapsed
    0
    1
    2
    3
    4
    5

我想创建一个时间序列数据框,所以我需要在 R 中有一个基于时间的对象。这里,“Time Elapsed”是一个数值变量(这些数字代表秒);如何将其转换为时间类型“秒”?我搜索了数据时间转换功能,例如:as.POSIX* {base} 但我认为这个功能不适合我的情况。任何人都可以帮助我吗?非常感谢!

【问题讨论】:

  • @jogo 谢谢,我已经编辑了我的问题。这些数字代表“秒”,但数据类型是数字,我想将数据类型更改为真正的“秒”,因此我可以创建我的时间序列数据框。
  • 为什么要将它们转换为秒类(R btw 中不存在)。
  • @DavidArenburg 我编辑了我的问题,谢谢你的帮助。我想这样做的原因是我想创建一个时间序列数据框。
  • @DavidArenburg 我看到有人在这个网站上使用 xts(DF$Close, as.Date(DF$Date, format='%m/%d/%Y')。
  • 我不熟悉xts,但Date 是R 中的一个有效类。

标签: r time-series type-conversion data-conversion


【解决方案1】:

我相信你在这方面做得不够低级。 xts 提供了一些方便的函数来帮助确定您是否可以将某些内容转换为 xts

xtsible(data) #Will probably tell you it fails with your current setup.

xts 建立在 zoo 的基础上,zoo 更灵活,但更难使用。

library(zoo)
zooData <- zoo(data$length, data$Time.Elapsed)
xtsible(zooData) #Will probably tell you it's ok, but probably doesn't matter since
                 #most/all of xts's functions work on zoo objects.
xtsData <- xts(zooData)

【讨论】:

  • xtsible(data) 和 xtsible(zooData) 都告诉我“假”。您知道如何解决此问题以创建时间序列数据框吗?我的下一步是做DTW,所以我必须使用时间序列数据框。
  • 那就用zooData吧。就像我上面提到的,几乎所有的 xts 函数也适用于 zoo 对象。
  • 非常感谢!有用!以前没听过动物园数据,所以可以代替“时间序列”?
  • zoo 包还处理时间序列数据,xts 包建立在zoo 和其他一些包提供的之上。我强烈建议您查看 zooxts 的小插图,以便您更好地了解它们的不同之处以及它们如何协同工作。
【解决方案2】:
require(lubridate)    
x <- as.POSIXct(strptime(data$Time.Elapsed, format = "%S"))
as.duration(x)

这应该可以解决问题。

【讨论】:

  • 你可能不需要第三行代码。我不确定你到底想要什么格式。如果你不需要第三行,那么你也不需要 lubridate 包。
  • y
  • 我运行 as.duration(x) 后收到错误消息:.setupMethodsTables(fdef, initialize = TRUE) 中的错误:类“derivedDefaultMethod”的这个对象没有名称“组”的插槽
  • 我不明白你在做什么。 xts 方法用于下面的答案。你的意思是这样做吗? y &lt;- as.POSIXct(strptime(data$Time.Elapsed, format = "%S"))x &lt;- data.frame(data$length,y)
  • @Reuben Mathew 我正在尝试创建一个时间序列数据框。
猜你喜欢
  • 1970-01-01
  • 2015-01-05
  • 2023-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
  • 2015-02-11
相关资源
最近更新 更多