簡體   English   中英

如何將具有多重變量的 POSIXct 數據轉換為時間序列格式

[英]How to transfer POSIXct data with multipel variables into time series format

我有多個變量的數據。 我的數據的str如下:

 tibble [2,859 × 92] (S3: tbl_df/tbl/data.frame)
  $ Date             : POSIXct[1:2859], format: "2010-04-01" "2010-04- 
 02" "2010-04-05" "2010-04-06" ...
   $ Num              : num [1:2859] 1 2 3 4 5 6 7 8 9 10 ...
  $ Price      : num [1:2859] 3158 3158 3159 3148 3119 ... `

我想將數據轉換為時間序列格式。 我嘗試了一些解決方案但沒有奏效(例如, 如何將帶有 POSIXct 日期的 dataframe 轉換為時間序列?我收到此錯誤: DF <- data.frame(FinDat = date, FinDat$Price = sample(100, length(date), TRUE)) Error: unexpected '=' in "DF <- data.frame(FinDat = date, FinDat$Price ="

我的數據的一個例子是:

 structure(list(Date = structure(c(1270080000, 1270166400, 1270425600, 
 1270512000, 1270598400, 1270684800, 1270771200, 1271030400, 1271116800, 
 1271203200), tzone = "UTC", class = c("POSIXct", "POSIXt")), 
Price = c(3157.957, 3157.957, 3158.681, 3148.222, 3118.709, 
3145.347, 3129.263, 3161.251, 3166.183, 3164.966)), row.names = c(NA, 
 -10L), class = c("tbl_df", "tbl", "data.frame"))

我想使用autoplotauto.arima

在評論中,發布者表示他們想要 plot 該系列並使用 arima(使用 ts),因此我們需要將其轉換為規則間隔的系列。 將其轉換為動物園,然后將時間轉換為年 + 分數,其中分數 = 0、1/N、2/N、...、(N-1)/N,其中 N 是每年給出 tt 的最大點數。 我們可以將它與 arima 一起使用。 我們將需要至少 2 年的數據來執行某些分析,盡管下面的代碼可以使用更少的數據。

library(zoo)

z <- read.zoo(dat)
plot(z)  # or use autoplot(z) with ggplot2 or xyplot(z) with lattice

zz <- z   
yr <- as.integer(as.yearmon(time(zz)))
N <- max(table(yr))
time(zz) <- yr + (ave(yr, yr, FUN = seq_along) - 1) / N
tt <- as.ts(zz)

tt
## Time Series:
## Start = c(2010, 1) 
## End = c(2010, 10) 
## Frequency = 10 
##  [1] 3157.957 3157.957 3158.681 3148.222 3118.709 3145.347 3129.263 3161.251
##  [9] 3166.183 3164.966

截屏

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM