reconverse/incidence2

User request: allow date adjustment using % strptime abbreviations syntax

Closed this issue · 3 comments

@nsbatra - the following requires the dev (GitHub main/master branches) of incidence2 and grates but hopefully works as you were hoping. Let me know what you think:

library(outbreaks)
library(incidence2)

dat <- ebola_sim_clean$linelist
x <- incidence(dat, date_of_onset, interval = "month")
x
#> An incidence2 object: 13 x 2
#> 5829 cases from 2014-Apr to 2015-Apr
#> interval: 1 month
#> cumulative: FALSE
#> 
#>    date_index count
#>    <month>    <int>
#>  1 2014-Apr       7
#>  2 2014-May      67
#>  3 2014-Jun     102
#>  4 2014-Jul     228
#>  5 2014-Aug     540
#>  6 2014-Sep    1144
#>  7 2014-Oct    1199
#>  8 2014-Nov     779
#>  9 2014-Dec     567
#> 10 2015-Jan     427
#> 11 2015-Feb     307
#> 12 2015-Mar     277
#> 13 2015-Apr     185
 
# centred dates (default for yearweek, single months, quarters and years)
plot(x, color = "white")

# histogram-esque dates on the breaks (defaults to "%Y-%m-%d")
plot(x, color = "white", centre_dates = FALSE)

# can specify a different format
plot(x, color = "white", centre_dates = FALSE, date_format = "%d-%m-%Y")

Created on 2021-05-19 by the reprex package (v2.0.0)

@tjtnew thanks so much for these developments. I haven't tried it yet, but the above looks perfect. I like how you can set the month Dec-2014 in the centre of the bar, and the YYYY-MM-DD at the front end of the bar.

I will try to test further today, but perhaps its a quick answer - does the date_format = argument work the same if the interval is weeks or two weeks?

Yes for single weeks. They default to being centred but can be changed to hitogram dates in the same way as above. 2 week intervals can never be centred and will always be dates (but you can use date_format to give them a different format) - see below and note the issue I need to fix on the y-axis labelling ;)

library(outbreaks)
library(incidence2)

dat <- ebola_sim_clean$linelist
xw<- incidence(dat, date_of_onset, interval = "week")
xw
#> An incidence2 object: 56 x 2
#> 5829 cases from 2014-W15 to 2015-W18
#> interval: 1 (Monday) week 
#> cumulative: FALSE
#> 
#>    date_index count
#>    <yrwk>     <int>
#>  1 2014-W15       1
#>  2 2014-W16       1
#>  3 2014-W17       5
#>  4 2014-W18       4
#>  5 2014-W19      12
#>  6 2014-W20      17
#>  7 2014-W21      15
#>  8 2014-W22      19
#>  9 2014-W23      23
#> 10 2014-W24      21
#> # … with 46 more rows

# centred dates (default for yearweek, single months, quarters and years)
plot(xw, color = "white")

# centred dates (default for yearweek, single months, quarters and years)
plot(xw, color = "white", centre_dates = FALSE)

x2w<- incidence(dat, date_of_onset, interval = "2 weeks")
x2w
#> An incidence2 object: 28 x 2
#> 5829 cases from 2014-04-07 to 2015-05-03
#> interval: 14 days
#> cumulative: FALSE
#> 
#>    date_index               count
#>    <period>                 <int>
#>  1 2014-04-07 to 2014-04-20     2
#>  2 2014-04-21 to 2014-05-04     9
#>  3 2014-05-05 to 2014-05-18    29
#>  4 2014-05-19 to 2014-06-01    34
#>  5 2014-06-02 to 2014-06-15    44
#>  6 2014-06-16 to 2014-06-29    52
#>  7 2014-06-30 to 2014-07-13    72
#>  8 2014-07-14 to 2014-07-27   120
#>  9 2014-07-28 to 2014-08-10   166
#> 10 2014-08-11 to 2014-08-24   255
#> # … with 18 more rows

# centred dates (default for yearweek, single months, quarters and years)
plot(x2w, color = "white")

Created on 2021-05-20 by the reprex package (v2.0.0)