2016-08-17 2 views
0

Предположим, я загрузил некоторые данные о фондовом рынке. Теперь я делаю это как список дат с непрерывными датами:Подставляя значения в течение дней, когда Биржа была закрыта. (R)

enter image description here

Теперь мне нужно присвоить значение предыдущей пятницы по субботу и Sun. Всякий раз, когда фондовый рынок отключился (например, праздники или что-то еще), мне нужно присвоить предыдущее значение. Как мне это сделать в R?

Спасибо!

+1

См. 'Zoo :: na.locf()' – zx8754

+0

cool 'na.locf()' работает для меня! –

ответ

0

Объединить с data_frame, который содержит все даты между минимальным и максимальным датами в вашем data_frame.

# data_frame with data that does not contain weekends 
df_foo = data_frame(
    date = seq.Date(from = as.Date("2016-01-01"), 
        to = as.Date("2016-06-01"), 
        by = "day"), 
    y = rnorm(length(date)) 
) %>% 
    filter(!chron::is.weekend(date)) 

df_foo %>% 
    left_join(
    # create a data_frame with all the dates in the range 
    data_frame(date = seq.Date(from = min(df_foo$date), to = max(df_foo$date), by = "day")), 
    # join with the date 
    ., 
    by = "date"   
) %>% 
    # convert all the NA to zero 
    mutate(y = ifelse(is.na(y), 0, y)) 
Смежные вопросы