Message-ID: <1344256813.19676.YahooMailNeo@web142603.mail.bf1.yahoo.com>
Date: 2012-08-06T12:40:13Z
From: arun
Subject: find date between two other dates
In-Reply-To: <1344240780314-4639253.post@n4.nabble.com>
Hi,
I run the second list of codes (is.between()) again from the sent mail.? It works fine for me.? I am using R 2.15 on Ubuntu 12.04. ??
sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
?[1] LC_CTYPE=en_US.UTF-8?????? LC_NUMERIC=C?????????????
?[3] LC_TIME=en_US.UTF-8??????? LC_COLLATE=en_US.UTF-8???
?[5] LC_MONETARY=en_US.UTF-8??? LC_MESSAGES=en_US.UTF-8??
?[7] LC_PAPER=C???????????????? LC_NAME=C????????????????
?[9] LC_ADDRESS=C?????????????? LC_TELEPHONE=C???????????
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C??????
attached base packages:
[1] stats???? graphics? grDevices utils???? datasets? methods?? base????
other attached packages:
[1] stringr_0.6?? reshape_0.8.4 plyr_1.7.1??
####################################
is.between<-function(x,a,b){
? x<a& x>=b
? }
?ddate <-? c("29/12/1998 20:00:33", "02/01/1999 05:20:44", "02/01/1999 06:18:36", "02/02/1999 07:06:59", "02/03/1999 07:10:56", "02/03/1999 07:57:18")
?ddate <- as.POSIXct(strptime(ddate, "%d/%m/%Y %H:%M:%S"), "GMT")
?ddate1<-data.frame(date=ddate)
?date2<-c("01/12/1998 00:00:00", "31/12/1998 23:59:59", "01/01/1999 00:00:00", "31/01/1999 23:59:59", "01/02/1999 00:00:00", "28/02/1999 23:59:59",
?"01/03/1999 00:00:00", "31/03/1999 23:59:59")
?date3<-as.POSIXct(strptime(date2, "%d/%m/%Y %H:%M:%S"), "GMT")
?ddate1[is.between(ddate1$date,date3[2],date3[1]),"Season"]<-1
? ddate1[is.between(ddate1$date,date3[4],date3[3]),"Season"]<-2
? ddate1[is.between(ddate1$date,date3[6],date3[5]),"Season"]<-3
? ddate1[is.between(ddate1$date,date3[8],date3[7]),"Season"]<-4
?ddate1
???????????????? date Season
1 1998-12-29 20:00:33????? 1
2 1999-01-02 05:20:44????? 2
3 1999-01-02 06:18:36????? 2
4 1999-02-02 07:06:59????? 3
5 1999-03-02 07:10:56????? 4
6 1999-03-02 07:57:18????? 4
#####################################
Not sure how you are getting NA.? One possibility is that if you used "date2"(which is not converted) instead of "date3" (as in date3 <-as.POSIXct....)
If you did this:
??? ddate1[is.between(ddate1$date,date2[2],date2[1]),"Season"]<-1
??? ddate1[is.between(ddate1$date,date2[4],date2[3]),"Season"]<-2
??? ddate1[is.between(ddate1$date,date2[6],date2[5]),"Season"]<-3
??? ddate1[is.between(ddate1$date,date2[8],date2[7]),"Season"]<-4
??? ddate1
???????????????? date Season
1 1998-12-29 20:00:33???? NA
2 1999-01-02 05:20:44???? NA
3 1999-01-02 06:18:36???? NA
4 1999-02-02 07:06:59???? NA
5 1999-03-02 07:10:56???? NA
6 1999-03-02 07:57:18???? NA
A.K.
----- Original Message -----
From: penguins <catrsw at bas.ac.uk>
To: r-help at r-project.org
Cc:
Sent: Monday, August 6, 2012 4:13 AM
Subject: Re: [R] find date between two other dates
Thanks arun and Rui; 3 fantastic suggestions.
The Season interval is not always a month so arun's suggestion works better
for this dataset. I couldn't get the as.between function to work on arun's
second suggestion, it only returned NAs.
However, arun's first suggestion worked a treat!
Many thanks
--
View this message in context: http://r.789695.n4.nabble.com/find-date-between-two-other-dates-tp4639231p4639253.html
Sent from the R help mailing list archive at Nabble.com.
______________________________________________
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.