0

我试图仅找到工作日的差异时间。我想根据假期纽约证券交易所日历计算 difftime。当我使用 difftime 函数时,答案中包含周末和假期,我的数据集仅包含工作日的数据,但是当使用 difftime 时,我必须以某种方式减去非工作日。

A 是 0 和 1 的向量,我想找出 0 或 1 的持续时间。第一次运行的持续时间假设为 35,我得到 49(从 1990 年 1 月开始的工作日)。

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
4

1 回答 1

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
于 2016-03-15T13:52:37.330 回答