Hello,

You can use a function that returns the number you want, not a logical value. But first, it's a bad idea to have a data.frame and a vector with the same name, so, in what follows, I've altered the df name.

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")
ddat <- data.frame(ddate=ddate)   # Here, different name.

season.month <- function(x){
    x <- as.integer(format(x, format="%m"))
    ifelse(x == 12L, 1L, x + 1L)
}

season.month(ddate)
ddat$season <- season.month(ddate)
str(ddat)
'data.frame':   6 obs. of  2 variables:
 $ ddate : POSIXct, format: "1998-12-29 20:00:33" "1999-01-02 05:20:44" ...
 $ season: int  1 2 2 3 4 4

ddat
                ddate 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

Hope this helps,

Rui Barradas

Em 05-08-2012 21:30, penguins escreveu:
Hi,

I am trying to assign "Season" values to dates depending on when they occur.

For example, the following dates would be assigned the following "Season"
numbers based on the "season" intervals detailed below in the code:

ddate                               Season
29/12/1998 20:00:33       1
02/01/1999 05:20:44       2
02/01/1999 06:18:36       2
02/02/1999 07:06:59       3
02/03/1999 07:10:56       4
02/03/1999 07:57:18       4

My approach so far doesnt work because of the time stamps and is probably
very long winded. However, to prevent errors I would prefer to keep the date
formats as dd/mm/yyyy as oppose to a numeric format. Any help on the
following code would be gratefully recieved:
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")

is.between<-function(x, a, b) {
        (x > a) & (b > x)
}

ddate$s1 <- is.between(ddate, 01/12/1998 00:00:00, 31/12/1998 23:59:59)
ddate$s2 <- is.between(ddate, 01/01/1999 00:00:00, 31/01/1999 23:59:59)
ddate$s3 <- is.between(ddate, 01/02/1999 00:00:00, 28/02/1999 23:59:59)
ddate$s4 <- is.between(ddate, 01/03/1999 00:00:00, 31/03/1999 23:59:59)

Many thanks



--
View this message in context: 
http://r.789695.n4.nabble.com/find-date-between-two-other-dates-tp4639231.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.

Reply via email to