2017-12-20 29 views
0

주당 가치를 합산하고 싶습니다. 때로는 첫 번째 주 또는 마지막 주에 7 일 미만의 시간이 주어집니다. 아래 예에서 데이터는 2016-01-01로 시작하지만 그 주에 대한 바닥 날짜는 2015-12-27입니다. 따라서 주 단위 합계는 7 일 대신 2 일을 기준으로합니다. 나는이 행동이 완전히 논리적이지만, 첫 번째 주와 마지막 주 (7 일 미만의 데이터로 구성 될 수 있음)가 음모에 낮은 값을 나타내지는 않을 것이라고 생각합니다. 어떻게해야합니까? 처음이자 마지막 주를 생략해야합니까? 여기서 평균값을 사용해야합니까? 방법?완료되지 않은 첫 주와 지난 주를 매주 집계하는 방법은 무엇입니까?

expenses <- data_frame(
    date=seq(as.Date("2016-01-01"), as.Date("2016-12-31"), by=1), 
    amount=rgamma(length(date), shape = 2, scale = 20)) 

plot_df <- expenses %>% 
    mutate(Week = floor_date(date, "week")) %>% 
    group_by(Week) %>% 
    summarize(exp_sum = sum(amount)) 

ggplot(data = plot_df, 
     aes(x = as.Date(Week), y = exp_sum)) + 
    geom_line() + 
    geom_point() + 
    scale_x_date(date_breaks = "1 week", date_labels = "%W") 

Plot Example

+0

https://stackoverflow.com/questions/22439540/how-to-get-week-numbers-from-dates에서 주 번호를 얻은 다음 – abhiieor

+0

을 집계하면 문제가 증가할까요? 즉, 다른 해가 data.frame에 있기 때문에 이것은 "53" "01" "02" "03"... "48"49 "50"' –

답변

1

기간이 만 데이터베이스를 뺀 첫 번째와 마지막 행을 선택해야이 내 첫번째 추천을 삭제하는 것이다 일의 동일한 수를 포함하지 않기 때문에. 이것은 매우 간단하며 한 줄로 처리됩니다.

plot_df <- plot_df[-c(1,nrow(plot_df)),] 

두 번째 방법은 모든 값의 평균값을 더하는 것입니다. 그러나 이것은 결과에 반영되어야합니다. 내가 말했듯이

plot_df[1,"exp_sum"] <- plot_df[2, "exp_sum"] 
plot_df[nrow(plot_df), "exp_sum"] <- plot_df[nrow(plot_df)-1, "exp_sum"] 

, 내가 그들을 지울 것입니다 :

plot_df[c(1,nrow(plot_df)),"exp_sum"] <- mean(plot_df$exp_sum) 

내 마지막 시도는 이후 또는 이전에 해당되는 값을 지정하는 것입니다.