Functions to convert character, factor and various date objects into a number, and vice versa.
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.
cal.yr( x, format="%Y-%m-%d", wh=NULL ) ## S3 method for class 'cal.yr' as.Date( x, ... )
x |
A factor or character vector, representing a date in format
|
format |
Format of the date values if |
wh |
Indices of the variables to convert if |
... |
Arguments passed on from other methods. |
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.
Bendix Carstensen, Steno Diabetes Center \& Dept. of Biostatistics, University of Copenhagen, b@bxc.dk, http://bendixcarstensen.com
# 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) )
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.