Re: [R] help on date dataset

2012-11-10 Thread anoumou

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

2012-11-10 Thread arun
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

2012-11-10 Thread Rui Barradas

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

2012-11-10 Thread Rui Barradas

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

2012-11-10 Thread arun
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

2012-11-10 Thread Rui Barradas

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

2012-11-10 Thread Rui Barradas

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

2012-11-10 Thread arun
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

2012-11-10 Thread anoumou
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.