Skip to content

calculating the number of days from dates

5 messages · Bob Green, Henrique Dallazuanna, Knut Krueger +1 more

#
Hello,

I gather variants of this question have been asked previously. I have 
done some reading but only became more confused, as I suspect what I 
am trying to do is more basic than other applications.

The following code readily calculates the difference in days between two dates:

  newdays <- ISOdate(2005, 5,12) - ISOdate(2006, 12, 22)

However, I wanted to be able to deduct the dates in one variable from 
the dates in another variable, resulting in a new variable - e.g the 
difference in days between the two dates. Below is a sample of my 
data. My questions:

1. I tried changing the data to dates via as.Date. Is this necessary 
or do I need to alter the date format itself, e.g to 12/12/78 or some 
other format?
2. I gather there are various packages as well as date formats.What 
is the most straight forward approach to calculate the difference 
between two dates, as below.


 > dates <- read.csv("c:\\dates.csv",header=T)
 > dates
           v1         v2
1 12/12/1978 12/12/2005
2 23/01/1965 23/09/2001
3 24/12/2004 16/03/2007
4  3/03/2003  4/04/2004
5  8/11/2006  1/05/2007

 > class(dates$v1)
[1] "factor"
 > class(dates$v2)
[1] "factor"

 > dates <- read.csv("c:\\dates.csv",header=T, 
as.Date(as.character(dates) "%d/%m/%Y"))
Error: syntax error, unexpected STR_CONST, expecting ',' in "dates <- 
read.csv("c:\\dates.csv",header=T, as.Date(as.character(dates) "%d/%m/%Y""
 >

Any assistance is much appreciated,

Bob
#
Try this:

dates <- read.csv("c:\\dates.csv",header=T)
dates[,1] <- as.Date(dates[,1], "%d/%m/%Y")
dates[,2] <- as.Date(dates[,2], "%d/%m/%Y")
transform(dates,
     Dif=V2-V1)
On 14/12/2007, Bob Green <bgreen at dyson.brisnet.org.au> wrote:

  
    
#
Bob Green schrieb:
What about chron library:

dts <- dates(c("02/27/92", "02/27/92", "01/14/92",
               "02/28/92", "02/01/92"))
dts
# [1] 02/27/92 02/27/92 01/14/92 02/28/92 02/01/92
tms <- times(c("23:03:20", "22:29:56", "01:03:30",
               "18:21:03", "16:56:26"))
tms
# [1] 23:03:20 22:29:56 01:03:30 18:21:03 16:56:26
x <- chron(dates = dts, times = tms)
x
# [1] (02/27/92 23:03:19) (02/27/92 22:29:56) (01/14/92 01:03:30)
# [4] (02/28/92 18:21:03) (02/01/92 16:56:26)

# We can add or subtract scalars (representing days) to dates or
# chron objects:
c(dts[1], dts[1] + 10)
# [1] 02/27/92 03/08/92
dts[1] - 31
# [1] 01/27/92


Knut
#
KK> Bob Green schrieb:
    >> 
    >> > dates <- read.csv("c:\\dates.csv",header=T)
    >> > dates
    >> v1         v2
    >> 1 12/12/1978 12/12/2005
    >> 2 23/01/1965 23/09/2001
    >> 3 24/12/2004 16/03/2007
    >> 4  3/03/2003  4/04/2004
    >> 5  8/11/2006  1/05/2007
    >> 
    >> > class(dates$v1)
    >> [1] "factor"
    >> > class(dates$v2)
    >> [1] "factor"
    >> 
    >> 
    KK> What about chron library:

it's  a  >> package <<  , not a library, please!

and as Henrique  has shown it's really not needed for the question.
There's the "Date" (S3) class, and even a "difftime" one
for time *differences*
See
	?as.Date
	?difftime
and also note the output of
     	methods(class = "Date")

Martin

    KK> dts <- dates(c("02/27/92", "02/27/92", "01/14/92",
    KK> "02/28/92", "02/01/92"))
    KK> dts
    KK> # [1] 02/27/92 02/27/92 01/14/92 02/28/92 02/01/92
    KK> tms <- times(c("23:03:20", "22:29:56", "01:03:30",
    KK> "18:21:03", "16:56:26"))
    KK> tms
    KK> # [1] 23:03:20 22:29:56 01:03:30 18:21:03 16:56:26
    KK> x <- chron(dates = dts, times = tms)
    KK> x
    KK> # [1] (02/27/92 23:03:19) (02/27/92 22:29:56) (01/14/92 01:03:30)
    KK> # [4] (02/28/92 18:21:03) (02/01/92 16:56:26)

    KK> # We can add or subtract scalars (representing days) to dates or
    KK> # chron objects:
    KK> c(dts[1], dts[1] + 10)
    KK> # [1] 02/27/92 03/08/92
    KK> dts[1] - 31
    KK> # [1] 01/27/92


    KK> Knut

    KK> ______________________________________________
    KK> R-help at r-project.org mailing list
    KK> https://stat.ethz.ch/mailman/listinfo/r-help
    KK> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
    KK> and provide commented, minimal, self-contained, reproducible code.
1 day later
#
Sorry for using library instead package, but

library() is one command for using packages.

Therefore I (and it seems that i am not the only one) used library instead package.

Knut