我有資料,其中一列中有 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 <- 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 課程了。我在這里進行了初步搜索,但找不到任何我認為有幫助的內容(我只是一個業余愛好者。)
uj5u.com熱心網友回復:
您目前有一個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));但使用時間感知操作通常更好(但有你現在看到的學習曲線......)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/397043.html
上一篇:如何使用字串的多個條件過濾行
下一篇:移動字串中的字母字符
