簡體   English   中英

從R中的時間序列對象中提取前一天的值

[英]Extract previous day value from a time-series object in R

我有10分鍾速率的時間序列( xts格式化)功耗數據

                      power 
2015-08-01 00:00:00 101.22              
2015-08-01 00:10:00 122.941                
2015-08-01 00:20:00  67.596              
2015-08-01 00:30:00 184.180       

現在,我想再添加3列:

  1. 第2列:“ Prevday1”-其中“ prevday1”將同時包含前一天的功耗讀數。 也就是說,如果當前指數是2015年8月5日,即1100小時,那么“prevday1”應包含同一時刻(2015年8月4日,1100小時)前一天的消費量
  2. 第3列:“ Prevday2”-其中“ prevday2”將包含前一天同一天前一天的功耗讀數
  3. 第4列:“ previnstant1”-其中“ previnstant1”將包含前一瞬間的讀數。 在我的情況下,它將在10分鍾之前耗電

不知何故,新的xts對象將像

                  power       prevday1     prevday2   previnstant1
2015-08-01 00:00:00 101.22       NA          NA          NA
2015-08-01 00:10:00 122.941      :            :           :
2015-08-01 00:20:00  67.596              
2015-08-01 00:30:00 184.180   
       :

現在的問題是我應該如何從歷史xts對象中提取第2、3和4列的值。 我從函數的.indexday類型開始,但無法獲取值。 R是否有任何特定功能可以使用xts索引提取這些類型的值?

經過一整天的努力,我想出了一個方法來填補剩下的三列。 該方法是:

  1. 提取/讀取當前觀察的索引
  2. 使用步驟1的索引來計算前兩天的索引
  3. 讀取與步驟2的索引對應的值。這將分別填充列2和3。
  4. 查找時間序列數據的周期性,並使用此周期讀取先前的值。 這將填寫專欄

代碼是:

#x is a xts time series object containing columns as shown in question
 dates <- as.Date(index(x),tz="Asia/Kolkata") # timestamp in date format
 for(i in 0:200) # no. of observations
      {
      a <- x[i,1] # Current observation 
      prev_d1 <- as.Date(index(a), tz ="Asia/Kolkata")-1 # previous day
      prev_d2 <- as.Date(index(a), tz ="Asia/Kolkata")-2 # previous to previous day
      prev_value1 <- x[dates %in% prev_d1 & .indexhour(x) %in% .indexhour(a) & .indexmin(x) %in% .indexmin(a)]$power
      prev_value2 <- x[dates %in% prev_d2 & .indexhour(x) %in% .indexhour(a) & .indexmin(x) %in% .indexmin(a)]$power
      x[i,"prevday1"] <- if(length(prev_value1)!=0) prev_value1 else NA
      x[i,"prevday2"] <- if(length(prev_value2)!=0) prev_value2 else NA
      x[i,"previnstant1"] <- ifelse(length(x[index(a)-frequency]$power)!=0, x[index(a)-frequency]$power, NA)# frequency represents periodicity values in terms of seconds
       }  

暫無
暫無

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

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