R: Functions to convert character, factor and various date...

cal.yr {Epi} | R Documentation

## Functions to convert character, factor and various date objects into a number, and vice versa.

### Description

Dates are converted to a numerical value, giving the calendar year as a fractional number. 1 January 1970 is converted to 1970.0, and other dates are converted by assuming that years are all 365.25 days long, so inaccuracies may arise, for example, 1 Jan 2000 is converted to 1999.999. Differences between converted values will be 1/365.25 of the difference between corresponding `Date` objects.

### Usage

      cal.yr( x, format="%Y-%m-%d", wh=NULL )
      ## S3 method for class 'cal.yr'
    as.Date( x, ... )

### Arguments

`x` | A factor or character vector, representing a date in format `format`, or an object of class `Date`, `POSIXlt`, `POSIXct`, `date`, `dates` or `chron` (the latter two requires the `chron` package). If `x` is a data frame, all variables in the data-frame which are of one the classes mentioned are converted to class `cal.yr`. See arguemt `wh`, though.
`format` | Format of the date values if `x` is factor or character. If this argument is supplied and `x` is a datafame, all character variables are converted to class `cal.yr`. Factors in the dataframe will be ignored.
`wh` | Indices of the variables to convert if `x` is a data frame. Can be either a numerical or character vector.
`...` | Arguments passed on from other methods.

### Value

`cal.yr` returns a numerical vector of the same length as `x`, of class `c("cal.yr","numeric")`. If `x` is a data frame a dataframe with some of the columns converted to class `"cal.yr"` is returned.

`as.Date.cal.yr` returns a `Date` object.

### Author(s)

Bendix Carstensen, Steno Diabetes Center \& Dept. of Biostatistics, University of Copenhagen, b@bxc.dk, http://bendixcarstensen.com

### See Also

`DateTimeClasses`, `Date`

### Examples

     # Character vector of dates:
     birth <- c("14/07/1852","01/04/1954","10/06/1987","16/05/1990",
                "12/11/1980","01/01/1997","01/01/1998","01/01/1999")
     # Proper conversion to class "Date":
     birth.dat <- as.Date( birth, format="%d/%m/%Y" )
     # Converson of character to class "cal.yr"
     bt.yr <- cal.yr( birth, format="%d/%m/%Y" )
     # Back to class "Date":
     bt.dat <- as.Date( bt.yr )
     # Numerical calculation of days since 1.1.1970:
     days <- Days <- (bt.yr-1970)*365.25
     # Blunt assignment of class:
     class( Days ) <- "Date"
     # Then data.frame() to get readable output of results:
     data.frame( birth, birth.dat, bt.yr, bt.dat, days, Days, round(Days) )

[Package Epi version 2.44 Index]