Re: [R] help on date dataset
Rui and ,arun thanks you so much. as i am a beginner, i am on that subject since two days. Thanks,thanks so much. It works !!! -- View this message in context: http://r.789695.n4.nabble.com/help-on-date-dataset-tp4649175p4649203.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.
Re: [R] help on date dataset
Thanks, Rui, Got it right: extraction(dat,date1,date2,format="%d/%m/%Y") # DATE PAYS x #1 26/04/2009 Mexique 18 #2 26/04/2009 usa 100 A.K. - Original Message - From: Rui Barradas To: arun ; r-help Cc: Sent: Saturday, November 10, 2012 2:33 PM Subject: Re: [R] help on date dataset Ok, I've coerced DATE to class Date before running the function: dat$DATE <- as.Date(dat$DATE, format = "%d/%m/%Y") Without it the function would be: extraction <- function(DF, date1, date2, format = "%Y-%m-%d"){ date <- as.Date(DF[[1]], format) date1 <- as.Date(date1, format) date2 <- as.Date(date2, format) idx <- date1 < date & date < date2 aggregate(DF[idx, 3], DF[idx, 1:2], FUN = sum) } date1<-"24/04/2009" date2<-"27/04/2009" extraction(dat, date1, date2, format = "%d/%m/%Y") # DATE PAYS x #1 26/04/2009 Mexique 18 #2 26/04/2009 usa 100 Note also that the op uses '<' and '>' not'<=' and '>=' so our results are different. Rui Barradas Em 10-11-2012 19:15, arun escreveu: > Thanks Rui, > > I tried that too: > 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) > > > 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 > aggregate(DF[idx, 3], DF[idx, 1:2], FUN = sum) > } > > > > extraction(dat,"24/04/2009","26/04/2009", format="%d/%m/%Y") > #Error in aggregate.data.frame(as.data.frame(x), ...) : > # no rows to aggregate > #In addition: Warning messages: > #1: In extraction(dat, "24/04/2009", "26/04/2009", format = "%d/%m/%Y") : > # Incompatible methods ("Ops.Date", "Ops.factor") for "<" > #2: In extraction(dat, "24/04/2009", "26/04/2009", format = "%d/%m/%Y") : > # Incompatible methods ("Ops.factor", "Ops.Date") for "<" > > date1<-"24/04/2009" > date2<-"27/04/2009" > > extraction(dat,"24/04/2009","26/04/2009", format="%d/%m/%Y") > #Error in aggregate.data.frame(as.data.frame(x), ...) : > # no rows to aggregate > #In addition: Warning messages: > #1: In extraction(dat, "24/04/2009", "26/04/2009", format = "%d/%m/%Y") : > # Incompatible methods ("Ops.Date", "Ops.factor") for "<" > #2: In extraction(dat, "24/04/2009", "26/04/2009", format = "%d/%m/%Y") : > # Incompatible methods ("Ops.factor", "Ops.Date") for "<" > > 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] zoo_1.7-7 stringr_0.6 reshape_0.8.4 plyr_1.7.1 > > loaded via a namespace (and not attached): > [1] grid_2.15.0 lattice_0.20-0 tools_2.15.0 > > > > Arun > > > > - Original Message - > From: Rui Barradas > To: arun > Cc: R help > Sent: Saturday, November 10, 2012 1:53 PM > Subject: Re: [R] help on date dataset > > Hello, > > Arun, you're using the wrong format, "%Y-%m-%d" is the default, with > "24/04/2009" you must use
Re: [R] help on date dataset
Ok, I've coerced DATE to class Date before running the function: dat$DATE <- as.Date(dat$DATE, format = "%d/%m/%Y") Without it the function would be: extraction <- function(DF, date1, date2, format = "%Y-%m-%d"){ date <- as.Date(DF[[1]], format) date1 <- as.Date(date1, format) date2 <- as.Date(date2, format) idx <- date1 < date & date < date2 aggregate(DF[idx, 3], DF[idx, 1:2], FUN = sum) } date1<-"24/04/2009" date2<-"27/04/2009" extraction(dat, date1, date2, format = "%d/%m/%Y") #DATEPAYS x #1 26/04/2009 Mexique 18 #2 26/04/2009 usa 100 Note also that the op uses '<' and '>' not'<=' and '>=' so our results are different. Rui Barradas Em 10-11-2012 19:15, arun escreveu: Thanks Rui, I tried that too: dat <- read.table(text=" DATE PAYS nb_pays.ILI. 1 24/04/2009 usa0 2 24/04/2009 usa0 3 24/04/2009 Mexique0 4 24/04/2009 Mexique0 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 Canada6 14 27/04/2009 Spain1 15 28/04/2009 Canada 6 ", header = TRUE) 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 aggregate(DF[idx, 3], DF[idx, 1:2], FUN = sum) } extraction(dat,"24/04/2009","26/04/2009", format="%d/%m/%Y") #Error in aggregate.data.frame(as.data.frame(x), ...) : # no rows to aggregate #In addition: Warning messages: #1: In extraction(dat, "24/04/2009", "26/04/2009", format = "%d/%m/%Y") : # Incompatible methods ("Ops.Date", "Ops.factor") for "<" #2: In extraction(dat, "24/04/2009", "26/04/2009", format = "%d/%m/%Y") : # Incompatible methods ("Ops.factor", "Ops.Date") for "<" date1<-"24/04/2009" date2<-"27/04/2009" extraction(dat,"24/04/2009","26/04/2009", format="%d/%m/%Y") #Error in aggregate.data.frame(as.data.frame(x), ...) : # no rows to aggregate #In addition: Warning messages: #1: In extraction(dat, "24/04/2009", "26/04/2009", format = "%d/%m/%Y") : # Incompatible methods ("Ops.Date", "Ops.factor") for "<" #2: In extraction(dat, "24/04/2009", "26/04/2009", format = "%d/%m/%Y") : # Incompatible methods ("Ops.factor", "Ops.Date") for "<" 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-8LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8LC_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] zoo_1.7-7 stringr_0.6 reshape_0.8.4 plyr_1.7.1 loaded via a namespace (and not attached): [1] grid_2.15.0lattice_0.20-0 tools_2.15.0 Arun - Original Message - From: Rui Barradas To: arun Cc: R help Sent: Saturday, November 10, 2012 1:53 PM Subject: Re: [R] help on date dataset Hello, Arun, you're using the wrong format, "%Y-%m-%d" is the default, with "24/04/2009" you must use extraction(dat, date1, date2, format = "%d/%m/%Y") #DATEPAYS x #1 2009-04-26 Mexique 18 #2 2009-04-26 usa 100 Rui Barradas Em 10-11-2012 18:26, arun escreveu: HI Rui, For some reason, I am not getting the result as expected. date1 #[1] "24/04/2009" date2 #[1] "27/04/2009" extraction(dat,date1,date2,format="%Y-%m-%d") #[1] DATE PAYS x #<0 rows> (or 0-length row.names) #Warning messages: #1: In extraction(dat, date1, date2, format = "%Y-%m-%d") : # Incompatible methods ("Ops.Date", "Ops.factor") for "<" #2: In extraction(dat, date1, date2, format = "%Y-%m-%d") : # Incompatible methods ("Ops.factor", "Ops
Re: [R] help on date dataset
Hello, Arun, you're using the wrong format, "%Y-%m-%d" is the default, with "24/04/2009" you must use extraction(dat, date1, date2, format = "%d/%m/%Y") #DATEPAYS x #1 2009-04-26 Mexique 18 #2 2009-04-26 usa 100 Rui Barradas Em 10-11-2012 18:26, arun escreveu: HI Rui, For some reason, I am not getting the result as expected. date1 #[1] "24/04/2009" date2 #[1] "27/04/2009" extraction(dat,date1,date2,format="%Y-%m-%d") #[1] DATE PAYS x #<0 rows> (or 0-length row.names) #Warning messages: #1: In extraction(dat, date1, date2, format = "%Y-%m-%d") : # Incompatible methods ("Ops.Date", "Ops.factor") for "<" #2: In extraction(dat, date1, date2, format = "%Y-%m-%d") : # Incompatible methods ("Ops.factor", "Ops.Date") for "<" extraction(dat,"24/04/2009","27/04/2009",format="%Y-%m-%d") #[1] DATE PAYS x #<0 rows> (or 0-length row.names) #Warning messages: #1: In extraction(dat, "24/04/2009", "27/04/2009", format = "%Y-%m-%d") : I tried with my function: fun1<-function(dat,date1,date2){ date1new<-as.Date(date1,format="%d/%m/%Y") date2new<-as.Date(date2,format="%d/%m/%Y") dat[,1]<-as.Date(dat$DATE,format="%d/%m/%Y") res1<-with(dat,aggregate(nb_pays.ILI.,by=list(DATE,PAYS),sum)) names(res1)<-names(dat) res2<-res1[res1[,1]>=date1new & res1[,1] <=date2new,] res2<-res2[order(res2[,1],res2[,2]),] #res2[,1]<-as.POSIXct(res2[,1])#if you want to convert to as.POSIXct() rownames(res2)<-1:nrow(res2) res2} fun1(dat,date1,date2) #DATEPAYS nb_pays.ILI. #1 2009-04-24 Mexique0 #2 2009-04-24 usa0 #3 2009-04-26 Mexique 18 #4 2009-04-26 usa 100 #5 2009-04-27 Canada6 #6 2009-04-27 Mexique 26 #7 2009-04-27 Spain1 #8 2009-04-27 usa 40 A.K. From: Rui Barradas To: anoumou Cc: r-help@r-project.org Sent: Saturday, November 10, 2012 12:17 PM Subject: Re: [R] help on date dataset Hello, Sorry, forgot the sum part. 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 aggregate(DF[idx, 3], DF[idx, 1:2], FUN = sum) } Hope this helps, Rui Barradas Em 10-11-2012 17:13, Rui Barradas escreveu: 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 usa0 2 24/04/2009 usa0 3 24/04/2009 Mexique0 4 24/04/2009 Mexique0 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 Canada6 14 27/04/2009 Spain1 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 usa0 2 24/04/2009 usa0 3 24/04/2009 Mexique0 4 24/04/2009 Mexique0 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
Re: [R] help on date dataset
HI Rui, For some reason, I am not getting the result as expected. date1 #[1] "24/04/2009" date2 #[1] "27/04/2009" extraction(dat,date1,date2,format="%Y-%m-%d") #[1] DATE PAYS x #<0 rows> (or 0-length row.names) #Warning messages: #1: In extraction(dat, date1, date2, format = "%Y-%m-%d") : # Incompatible methods ("Ops.Date", "Ops.factor") for "<" #2: In extraction(dat, date1, date2, format = "%Y-%m-%d") : # Incompatible methods ("Ops.factor", "Ops.Date") for "<" extraction(dat,"24/04/2009","27/04/2009",format="%Y-%m-%d") #[1] DATE PAYS x #<0 rows> (or 0-length row.names) #Warning messages: #1: In extraction(dat, "24/04/2009", "27/04/2009", format = "%Y-%m-%d") : I tried with my function: fun1<-function(dat,date1,date2){ date1new<-as.Date(date1,format="%d/%m/%Y") date2new<-as.Date(date2,format="%d/%m/%Y") dat[,1]<-as.Date(dat$DATE,format="%d/%m/%Y") res1<-with(dat,aggregate(nb_pays.ILI.,by=list(DATE,PAYS),sum)) names(res1)<-names(dat) res2<-res1[res1[,1]>=date1new & res1[,1] <=date2new,] res2<-res2[order(res2[,1],res2[,2]),] #res2[,1]<-as.POSIXct(res2[,1]) #if you want to convert to as.POSIXct() rownames(res2)<-1:nrow(res2) res2} fun1(dat,date1,date2) # DATE PAYS nb_pays.ILI. #1 2009-04-24 Mexique 0 #2 2009-04-24 usa 0 #3 2009-04-26 Mexique 18 #4 2009-04-26 usa 100 #5 2009-04-27 Canada 6 #6 2009-04-27 Mexique 26 #7 2009-04-27 Spain 1 #8 2009-04-27 usa 40 A.K. From: Rui Barradas To: anoumou Cc: r-help@r-project.org Sent: Saturday, November 10, 2012 12:17 PM Subject: Re: [R] help on date dataset Hello, Sorry, forgot the sum part. 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 aggregate(DF[idx, 3], DF[idx, 1:2], FUN = sum) } Hope this helps, Rui Barradas Em 10-11-2012 17:13, Rui Barradas escreveu: > 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/
Re: [R] help on date dataset
Hello, Sorry, forgot the sum part. 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 aggregate(DF[idx, 3], DF[idx, 1:2], FUN = sum) } Hope this helps, Rui Barradas Em 10-11-2012 17:13, Rui Barradas escreveu: 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 usa0 2 24/04/2009 usa0 3 24/04/2009 Mexique0 4 24/04/2009 Mexique0 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 Canada6 14 27/04/2009 Spain1 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 usa0 2 24/04/2009 usa0 3 24/04/2009 Mexique0 4 24/04/2009 Mexique0 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 Canada6 14 27/04/2009 Spain1 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) & (B1View 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@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. __ 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.
Re: [R] help on date dataset
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 usa0 2 24/04/2009 usa0 3 24/04/2009 Mexique0 4 24/04/2009 Mexique0 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 Canada6 14 27/04/2009 Spain1 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 usa0 2 24/04/2009 usa0 3 24/04/2009 Mexique0 4 24/04/2009 Mexique0 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 Canada6 14 27/04/2009 Spain1 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 } -- 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@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.
Re: [R] help on date dataset
HI, May be this helps: dat1<-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 27/04/2009 Spain 18 16 28/04/2009 Canada 6 ",sep="",header=TRUE,stringsAsFactors=FALSE) fun1<-function(dat,date1,date2){ date1new<-as.Date(date1,format="%d/%m/%Y") date2new<-as.Date(date2,format="%d/%m/%Y") dat[,1]<-as.Date(dat$DATE,format="%d/%m/%Y") res1<-with(dat,aggregate(nb_pays.ILI.,by=list(DATE,PAYS),sum)) names(res1)<-names(dat) res2<-res1[res1[,1]>=date1new & res1[,1] <=date2new,] res2<-res2[order(res2[,1],res2[,2]),] #res2[,1]<-as.POSIXct(res2[,1]) #if you want to convert to as.POSIXct() rownames(res2)<-1:nrow(res2) res2} date1="24/04/2009" date2="27/04/2009" fun1(dat1,date1,date2) # DATE PAYS nb_pays.ILI. #1 2009-04-24 Mexique 0 #2 2009-04-24 usa 0 #3 2009-04-26 Mexique 18 #4 2009-04-26 usa 100 #5 2009-04-27 Canada 6 #6 2009-04-27 Mexique 26 #7 2009-04-27 Spain 19 #8 2009-04-27 usa 40 fun1(dat1,"27/04/2009","28/04/2009") # DATE PAYS nb_pays.ILI. #1 2009-04-27 Canada 6 #2 2009-04-27 Mexique 26 #3 2009-04-27 Spain 19 #4 2009-04-27 usa 40 #5 2009-04-28 Canada 6 A.K. ----- Original Message - From: anoumou To: r-help@r-project.org Cc: Sent: Saturday, November 10, 2012 8:21 AM Subject: [R] help on date dataset 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) & (B1http://r.789695.n4.nabble.com/help-on-date-dataset-tp4649175.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.
[R] help on date dataset
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 usa0 2 24/04/2009 usa0 3 24/04/2009 Mexique0 4 24/04/2009 Mexique0 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 Canada6 14 27/04/2009 Spain1 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) & (B1http://r.789695.n4.nabble.com/help-on-date-dataset-tp4649175.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.