【问题标题】:Merging data with irregular time合并时间不规则的数据
【发布时间】:2015-06-04 08:15:07
【问题描述】:

我正在尝试将虚拟变量组合到不规则的时间序列 x

如果虚拟变量出现在不存在的日期x。然后虚拟变量将出现在 x

中的下一个日期

为了说明我的问题,这里是一个例子:

假设我对 2000 年 12 月 15 日和 2000 年 2 月 18 日发生的事件有虚拟变量:

dummy <-zoo(1,as.Date(c( "2000-12-15", "2000-12-18")))

我有一个时间序列x

x <-zoo(rnorm(5),as.Date(c("2000-12-15", "2000-12-16", 
"2000-12-17","2000-12-20", "2000-12-21")))

合并后我想要的是:

                    x dummy
2000-12-15  0.5431835     1
2000-12-16 -1.5612897     0
2000-12-17 -0.1944823     0
2000-12-20  1.2124671     1
2000-12-21 -1.2948487     0

对于 2000 年 12 月 15 日的事件,该事件发生在 x 中的日期。因此,这里没有问题。但是,对于发生在 2000 年 12 月 8 日的事件,日期不存在于 x 中。我希望虚拟变量移动到 x 中的下一个日期,即 2000-12-20。我该怎么做?

【问题讨论】:

    标签: r date merge time-series


    【解决方案1】:
    y <-zoo(1,as.Date(c( "2000-12-15", "2000-12-18")))
    
    x <-zoo(rnorm(5),as.Date(c("2000-12-15", "2000-12-16", 
                           "2000-12-17","2000-12-20", "2000-12-21")))
    data<-merge(x,y,all=TRUE)
    
    n<-length(data$x)-1
    for(i in 1:n){
      if(is.na(data$x[i]))
       data$y[i+1]<-1
     }
    
    data<-data[complete.cases(data$x),]
    data[is.na(data$y),]<-0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 2020-05-07
      • 2015-05-23
      • 1970-01-01
      • 2014-02-17
      • 2021-03-17
      • 2011-10-28
      相关资源
      最近更新 更多