[R] help on date dataset
Rui Barradas
ruipbarradas at sapo.pt
Sat Nov 10 18:13:35 CET 2012
Hello,
If I understand it correctly, you have a data.frame whose first column
is a date and want to extract all lines between two given dates. If so,
try the following. Note that I've added two new arguments to your function.
dat <- read.table(text="
DATE PAYS nb_pays.ILI.
1 24/04/2009 usa 0
2 24/04/2009 usa 0
3 24/04/2009 Mexique 0
4 24/04/2009 Mexique 0
5 26/04/2009 usa 20
6 26/04/2009 usa 20
7 26/04/2009 usa 20
8 26/04/2009 usa 20
9 26/04/2009 usa 20
10 26/04/2009 Mexique 18
11 27/04/2009 usa 40
12 27/04/2009 Mexique 26
13 27/04/2009 Canada 6
14 27/04/2009 Spain 1
15 28/04/2009 Canada 6
", header = TRUE)
dat
dat$DATE <- as.Date(dat$DATE, format = "%d/%m/%Y")
extraction <- function(DF, date1, date2, format = "%Y-%m-%d"){
date1 <- as.Date(date1, format)
date2 <- as.Date(date2, format)
idx <- date1 < DF[[1]] & DF[[1]] < date2
DF[idx, ]
}
date1 <- "04 03 2009"
date2 <- "04 12 2009"
extraction(dat, date1, date2, format = "%d %m %Y")
Hope this helps,
Rui Barradas
Em 10-11-2012 13:21, anoumou escreveu:
> Hi everybody,
> I am beginer in R and I need your precious help.
> I want to create a small function in R as in sas to retrieve date.
> I have a file with data that import in R.
> DATE PAYS nb_pays.ILI.
> 1 24/04/2009 usa 0
> 2 24/04/2009 usa 0
> 3 24/04/2009 Mexique 0
> 4 24/04/2009 Mexique 0
> 5 26/04/2009 usa 20
> 6 26/04/2009 usa 20
> 7 26/04/2009 usa 20
> 8 26/04/2009 usa 20
> 9 26/04/2009 usa 20
> 10 26/04/2009 Mexique 18
> 11 27/04/2009 usa 40
> 12 27/04/2009 Mexique 26
> 13 27/04/2009 Canada 6
> 14 27/04/2009 Spain 1
> 15 28/04/2009 Canada 6
>
> I want to create something like that:
> • When entering two dates date1,date2 in the fuction extraction.
> The result must be: a new subdata with one line per date , per PAYS,per
> nb_pays.ILI (by summing all the number in variable nb_pays.ILI per date,per
> country) and the date must be between date1 and date2.
> I sart to do somethings like that
> extraction=function(date1,date2)
> {date<-derdata[["DATE"]]
> date
> sort(date)
> PAYS<-derdata[["PAYS"]]
> nb_pays.ILI<-derdata[["nb_pays.ILI."]]
> test1<-as.character(date,"%d %m %y")
> test1
> #the first date
> date1<- "04 03 2009"
> date1 <- strptime(date1, "%d %m %Y")
> date1
> unlist(unclass(date1))
> date1 <- as.POSIXct(date1)
> date1
> attributes(date1)
> date1 <-unclass(date1)
> date1
>
> #the second date
> date2<- "04 12 2009"
> date2 <- strptime(date2, "%d %m %Y")
> date2
> unlist(unclass(date2))
> date2 <- as.POSIXct(date2)
> date2
> attributes(date2)
> date2 <-unclass(date2)
> date2
> B1<- as.POSIXct(test1)
> B1 <-unclass(B1)
> B1
> B4 <- B1[(B1>date1) & (B1<date2)]
> B4
>
> }
>
>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/help-on-date-dataset-tp4649175.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.
More information about the R-help
mailing list