Aggregate ISO weeks into months with a dataset containing just ISO weeks

前端 未结 4 984
孤城傲影
孤城傲影 2021-01-14 03:25

My data is in a dataframe which has a structure like this:

df2 <- data.frame(Year = c(\"2007\"), Week = c(1:12), Measurement = c(rnorm(12, mean = 4, sd =          


        
4条回答
  •  北恋
    北恋 (楼主)
    2021-01-14 04:12

    If I understand correctly, you don't know the exact day, but only the week number and year. My answer takes the first day of the year as a starting date and then compute one week intervals based on that. You can probably refine the answer.

    Based on an answer by mnel, using the lubridate package.

    library(lubridate)
    
    # Prepare week, month, year information ready for the merge
    # Make sure you have all the necessary dates
    wmy <- data.frame(Day = seq(ymd('2007-01-01'),ymd('2007-04-01'), 
                                by = 'weeks')) 
    wmy <- transform(wmy, 
                     Week = isoweek(Day),
                     Month = month(Day),
                     Year = isoyear(Day))
    
    # Merge this information with your data
    merge(df2, wmy, by = c("Year", "Week"))
    
       Year Week Measurement        Day Month
    1  2007    1    3.704887 2007-01-01     1
    2  2007   10    1.974533 2007-03-05     3
    3  2007   11    4.797286 2007-03-12     3
    4  2007   12    4.291169 2007-03-19     3
    5  2007    2    4.305010 2007-01-08     1
    6  2007    3    3.374982 2007-01-15     1
    7  2007    4    3.600008 2007-01-22     1
    8  2007    5    4.315184 2007-01-29     1
    9  2007    6    4.887142 2007-02-05     2
    10 2007    7    4.155411 2007-02-12     2
    11 2007    8    4.711943 2007-02-19     2
    12 2007    9    2.465862 2007-02-26     2
    

提交回复
热议问题