根据holidayNYSE在R中的工作日的Difftime

时间:2016-03-15 09:40:44

标签: r data.table time-series difftime

我试图仅在工作日找到困难时间。我想根据holidayNYSE日历计算difftime。当我使用difftime函数时,周末和假期都包含在答案中,我的数据集只包含工作日的数据,但是当使用difftime时,我必须以某种方式减去非工作日。

A是0和1的向量,我想找到0或1的天数的持续时间。运行1的持续时间假设为35,我得到49(1990年1月起的工作日)。 / p>

df <- data.frame(Date=(dates), A)


setDT(df)
df <- data.frame(Date=(dates), A)

DF1 <- df[, list(A = unique(A), duration = difftime(max(Date),min(Date), holidayNYSE
(year=setRmetricsOptions(start="1990-01-01", end="2015-31-12")))), by = run]
DF1
     run   A duration

 1:    1    1  49 days
  2:   2    0  22 days
  3:   3    1  35 days
  4:   4    0  27 days
  5:   5    1  14 days
 ---                  
291: 291    1   6 days
292: 292    0  34 days
293: 293    1  10 days
294: 294    0  15 days
295: 295    1  29 days

1 个答案:

答案 0 :(得分:0)

在不使用difftime的情况下回答我的问题:

df <- data.frame(Date=(dates), Value1=bull01)

setDT(df)
df[, run := cumsum(c(1, diff(Value1) !=0))]

duration <- rep(0)
for (i in 1:295){
ind <- which(df$run==i)
a <- df$Date[ind]
duration[i] <- length(a)
}

c <- rep(c(1,0),295)
c <- c[1:295]
df2 <- data.frame(duration, type=c)


> df2
run   duration type
1         35    1
2         17    0
3         25    1
4         20    0
5         10    1
---
291        5    1
292       25    0
293        9    1
294       11    0
295       21    1