2016-03-15 37 views
0

我試圖找到工作日的difftime只。我想根據holidayNYSE日曆來計算difftime。當我使用difftime函數時,週末和假日都包含在答案中,我的數據集僅包含工作日的數據,但使用difftime時,我必須以某種方式減去非工作日。根據holidayNYSE在R的工作日的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 

回答

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