【问题标题】:Converting a date to numeric in R在R中将日期转换为数字
【发布时间】:2022-01-27 12:27:10
【问题描述】:

我有数据,其中一列中有 YYYY-MM-DD 格式的日期,另一列是 num。

包:

library(forecast)
library(ggplot2)
library(readr)

运行 str(my_data) 会产生以下结果:

spec_tbl_df [261 x 2] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
 $ date      : Date[1:261], format: "2017-01-01" "2017-01-08" ...
 $ popularity: num [1:261] 100 81 79 75 80 80 71 85 79 81 ...
 - attr(*, "spec")=
  .. cols(
  ..   date = col_date(format = ""),
  ..   popularity = col_double()
  .. )
 - attr(*, "problems")=<externalptr> 

我想对此做一些时间序列分析。运行此decomp &lt;- stl(log(my_data), s.window="periodic") 的第一行代码时 我一直遇到以下错误:

Error in Math.data.frame(my_data) : 
  non-numeric-alike variable(s) in data frame: date

最初我的日期格式是 MM/DD/YYYY 格式,所以我觉得我……差一点。我正在再次学习 R,但我已经有一段时间没有参加正式的 R 课程了。我在这里进行了初步搜索,但找不到任何我认为有帮助的东西(我只是一个业余爱好者。)

【问题讨论】:

  • 你在做什么“分析”?如果您告诉我们哪些代码会产生错误,以及存在非基础 R 包,我们会更容易提供帮助。
  • 也许:my_data$numbers
  • @r2evans 当然!已编辑!

标签: r datetime time-series


【解决方案1】:

您当前有一个data.frame(或tibble 的变体)。那还不是时间意识。你可以做类似的事情

library(ggplot2)
ggplot(data=df) + aes(x=date, y=popularity) + geom_line()

按日期正确获取基本线图。

您必须更仔细地查看包 forecast 以及您要用于预测或建模的函数示例。像xts 这样的包可以帮助你,即

library(xts)
x <- xts(df$popularity, order.by=df$date)
plot(x)  # plot xts object

除了绘图之外,您还可以获得时间和日期感知滞后、领先和子集。其余的更多取决于你想做什么......你没有告诉我们太多。

最后,如果您想将日期转换为数字(自 1970 年 1 月 1 日起),请快速as.numeric(df$date)) 将;但使用时间感知操作通常会更好(但有你现在看到的学习曲线......)

【讨论】:

    猜你喜欢
    • 2021-03-21
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    相关资源
    最近更新 更多