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:> > 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 > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Henrique Dallazuanna Curitiba-Paran?-Brasil 25? 25' 40" S 49? 16' 22" O
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" > >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
> Sorry for using library instead package, but > library() is one command for using packages.... which is why all efforts to make folks say "package" instead of >> "library" << are doomed to fail, IMHO. Besides, in English, "library" also means "a collection of software or data usually reflecting a specific theme or application" (#9 on the list from http://dictionary.reference.com/ ). Therefore: > "library" == "package" [1] TRUE! and just about the only way to clear up the "confusion" would be to rename library() to package(), and replace "library" with "folder" or "directory".> -----Original Message----- > From: r-help-bounces at r-project.org > [mailto:r-help-bounces at r-project.org] On Behalf Of Knut Krueger > Sent: Monday, December 17, 2007 2:11 AM > To: 'R R-help' > Subject: Re: [R] calculating the number of days from dates > > > > it's a >> package << , not a library, please! > > > > > 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 > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >