2016-08-17 2 views
0

내가 주식 시장 데이터를 다운로드했다고 가정 해 봅시다.증권 거래소가 폐쇄 된 날의 값 대체. (R)

enter image description here

가 지금은 토요일과 일요일에 이전 금요일의 값을 지정해야합니다 : 지금, 나는 연속 날짜와 날짜 목록으로 만드는 중이라서 주식 시장이 꺼질 때마다 (예 : 공휴일 또는 무언가) 이전 값을 지정해야합니다. R에 대해 어떻게 생각합니까?

감사합니다.

+1

'zoo :: na.locf()'참조 – zx8754

+0

멋진 '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))