![](/img/trans.png)
[英]How to extract longitudinal time-series data from a dataframe in R for time-series analysis and imputation
[英]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列:
不知何故,新的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
索引提取這些類型的值?
經過一整天的努力,我想出了一個方法來填補剩下的三列。 該方法是:
代碼是:
#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.