countsByYear: Allocate totals by year In Ecfun: Functions for Ecdat

Description

Allocate `total` to `countByYear` for a constant count per day between `start` and `end` for multiple events.

Usage

 ```1 2 3``` ```countsByYear(data, start="Start1", end='End1', total='BatDeath', event='WarName', endNA=max(data[, c(start,end)])) ```

Arguments

 `data` a `data.frame` with columns `start`, `end`, and `total` `start, end` columns of `data` of class `Date` with `start` <= `end` during which `total` is to be allocated `total` A quantity to be allocated by year giving a constant rate per day. `event` name of the event whose total is to be allocated. `endNA` Date to use if `is.na(data[, end])`.

Value

a numeric `matrix` whose `colSums` match `total` with names for all the years between `start` and `end`. The number of columns of the output matrix match the number of rows of `data`. The `colSums` match `total`.

Spencer Graves

Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27``` ```## ## 1. data.frame(WarName, Start1, End1, BatDeath) ## start73 <- as.Date('1973-01-22') tstWars <- data.frame(WarName=c('short', '2yr', '10yr'), Start1=c(start73, start73+365, start73-365), End1=start73+c(99, 2*365, NA), BatDeath=c(100, 123, 456)) ## ## 2. do ## deathsByYr <- countsByYear(tstWars, endNA=start73+9*365.2) # check Counts <- matrix(0, 11, 3, dimnames=list(c(1972:1982), tstWars\$WarName) ) Counts['1973', 1] <- 100 Counts[as.character(1974:1975), 2] <- with(tstWars, countByYear(Start1[2], End1[2], BatDeath[2]) ) Counts[as.character(1972:1982), 3] <- with(tstWars, countByYear(Start1[3], start73+9*365.2, BatDeath[3]) ) all.equal(deathsByYr, Counts) ```

Ecfun documentation built on May 29, 2017, 10:44 a.m.