根据不规则变化的数据构建时间序列数据集

时间:2018-05-01 14:07:15

标签: r time-series

我有一个数据集代表了一个中央银行参数(印度中央银行的LAF走廊的宽度,RBI),从2011年4月1日到2011年3月。现在,这个数据集看起来像这样:

| 27/04/2001 - 29/04/2001 | 225 |
| 30/04/2001 - 27/05/2001 | 200 |
| 28/05/2001 - 06/06/2001 | 225 |
| 07/06/2001 - 04/03/2002 | 200 |
.....

我想将此转换为时间序列数据集,其中包含LAF宽度条目,该数据集来自所研究的时间段(04/2001 - 03/2011)。如何将其转换为适当的时间序列?

1 个答案:

答案 0 :(得分:1)

我想你的数据是df,有两列这样的?:

period <- c("27/04/2001 - 29/04/2001", "30/04/2001 - 27/05/2001", 
        "28/05/2001 - 06/06/2001", "07/06/2001 - 04/03/2002")
values <- (c(225, 200, 225, 200))
df <- data.frame(period, values)

然后我使用substr命令为每个句点的开始日结束添加列,并添加该期间的总天数(方便检查完整性)

df$start <- as.Date(substr(df$period,1,10), "%d/%m/%Y")
df$end <- as.Date(substr(df$period,14,23),  "%d/%m/%Y")
df$nodays <- df$end-df$start+1

接下来,我在一列中创建一个新的df,其中包含原始df中存在的所有日期,以及相应的LAF值。

LAF_date <- NULL
LAF_value <- NULL
for (i in 1:dim(df[1])){
    tmp_date <- seq.Date(df$start[i],df$end[i], by="days")
    LAF_date <- append(LAF_date, tmp_date)
    tmp_value <- rep(df$values[i], length(tmp_date))
    LAF_value <- append(LAF_value, tmp_value)
    }        

new_df <- data.frame(as.Date(LAF_date), LAF_value )

可能会有更快的方式,但今天我在回答Stackoverflow上的问题(腮红,脸红)时失去了童贞。希望你能用它。

相关问题