2016-03-15 2 views
0

Я пытаюсь найти difftime только для рабочих дней. Я хочу рассчитать difftime в соответствии с календарем holidayNYSE. Когда я использую функцию difftime, выходные дни и праздничные дни включены в ответы, мой набор данных содержит только данные из рабочих дней, но при использовании difftime мне нужно как-то вычитать нерабочие дни.Difftime на рабочие дни в зависимости от праздникаNYSE в R

A - это вектор 0 и 1, и я хочу найти продолжительность того, сколько дней с 0 или 1. Продолжительность для запуска - это 35, и я получаю 49 (рабочие дни с января 1990 года).

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 
Смежные вопросы