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 <cat...@bas.ac.uk> To: r-help@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@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. ______________________________________________ R-help@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.