在R中将日期转换为数字

Converting a date to numeric in R

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

包:

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 <- 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,但是我已经有一段时间没有上过正式的课程了。我在这里进行了初步搜索,但找不到任何我认为有用的东西(我只是一个业余爱好者。)

您目前有一个 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)) 会很快;但使用时间感知操作通常更好(但有你现在看到的学习曲线......)