Re: [R] calculate time from dates

2013-07-12 Thread Rui Barradas

Hello,

It's better if you keep it on the list, the odds of getting more and 
better answers is greater.


As for your question, I've made up a dat2 with an extra column. Try the 
following, it's independent of the number of columns.




dat2 - data.frame(ID = dat1$ID,
month = mondf(01/01/2008, dat1$date, format = %m/%d/%Y) + 1,
other = rnorm(6))

dat2

sp - split(dat2, list(dat2$ID, dat2$month))
result - do.call(rbind, lapply(sp, tail, 1))
rownames(result) - seq_len(nrow(result))
result


Hope this helps,

Rui Barradas


Em 12-07-2013 09:04, Gallon Li escreveu:

Dear Rui, I think your solution is the best. however, to keep only the
last one if month diff are equal part: because my data also have other
variables besides ID and month, your code doesn't work. where should i
modify it? in another word, my dat2 contains more than 2 columns.i
tried to modify [1:2] to [1:p] where p is the total number of columns in
dat2 but it still doesn't work.

Best, Gallon


On Thu, Jul 11, 2013 at 7:00 PM, Rui Barradas ruipbarra...@sapo.pt
mailto:ruipbarra...@sapo.pt wrote:

Hello,

The functions in stackoverflow need a date 'format' argument.



# Functions from
#

http://stackoverflow.com/__questions/1995933/number-of-__months-between-two-dates

http://stackoverflow.com/questions/1995933/number-of-months-between-two-dates
# with a 'format' argument added
#
# turn a date into a 'monthnumber' relative to an origin
monnb - function(d, format = %Y-%m-%d) {
 lt - as.POSIXlt(as.Date(d, origin=1900-01-01, format =
format))
 lt$year*12 + lt$mon
}
# compute a month difference as a difference between two monnb's
mondf - function(d1, d2, format = %Y-%m-%d) {
 monnb(d2, format = format) - monnb(d1, format = format)
}


dat1 - read.table(text = 

ID date
1 4/12/2008
1 4/13/2008
1 5/11/2008
2 3/21/2009
2 4/22/2009
2 8/05/2009
, header = TRUE)

dat2 - data.frame(ID = dat1$ID, month = mondf(01/01/2008,
dat1$date, format = %m/%d/%Y) + 1)

# Now keep just the last one if month diffs are equal
result - with(dat2, aggregate(month, list(ID, month), FUN = tail,
1))[1:2]
names(result) - names(dat2)
result


Hope this helps,

Rui Barradas

Em 11-07-2013 11:03, andrija djurovic escreveu:

Hi.

See

http://stackoverflow.com/__questions/1995933/number-of-__months-between-two-dates

http://stackoverflow.com/questions/1995933/number-of-months-between-two-dates

Andrija


On Thu, Jul 11, 2013 at 11:56 AM, Gallon Li gallon...@gmail.com
mailto:gallon...@gmail.com wrote:

My data are from 2008 to 2010, with repeated measures for
same subjects. I
wish to compute number of months since january 2008.

The data are like the following:

ID date
1 4/12/2008
1 4/13/2008
1 5/11/2008
2 3/21/2009
2 4/22/2009
2 8/05/2009
...

the date column are in the format %m/%d/%y. i wish to obtain

ID month
1 4
1 4
1 5
2 15
2 16
2 20
...

also, for the same ID with two identical month, I only want
to keep the
last one. can any expert help with this question?

  [[alternative HTML version deleted]]


R-help@r-project.org mailto:R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/__listinfo/r-help
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/__posting-guide.html
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible
code.


 [[alternative HTML version deleted]]


R-help@r-project.org mailto:R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/__listinfo/r-help
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/__posting-guide.html
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] calculate time from dates

2013-07-11 Thread Gallon Li
My data are from 2008 to 2010, with repeated measures for same subjects. I
wish to compute number of months since january 2008.

The data are like the following:

ID date
1 4/12/2008
1 4/13/2008
1 5/11/2008
2 3/21/2009
2 4/22/2009
2 8/05/2009
...

the date column are in the format %m/%d/%y. i wish to obtain

ID month
1 4
1 4
1 5
2 15
2 16
2 20
...

also, for the same ID with two identical month, I only want to keep the
last one. can any expert help with this question?

[[alternative HTML version deleted]]

__
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] calculate time from dates

2013-07-11 Thread andrija djurovic
Hi.

See
http://stackoverflow.com/questions/1995933/number-of-months-between-two-dates

Andrija


On Thu, Jul 11, 2013 at 11:56 AM, Gallon Li gallon...@gmail.com wrote:

 My data are from 2008 to 2010, with repeated measures for same subjects. I
 wish to compute number of months since january 2008.

 The data are like the following:

 ID date
 1 4/12/2008
 1 4/13/2008
 1 5/11/2008
 2 3/21/2009
 2 4/22/2009
 2 8/05/2009
 ...

 the date column are in the format %m/%d/%y. i wish to obtain

 ID month
 1 4
 1 4
 1 5
 2 15
 2 16
 2 20
 ...

 also, for the same ID with two identical month, I only want to keep the
 last one. can any expert help with this question?

 [[alternative HTML version deleted]]

 __
 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.


[[alternative HTML version deleted]]

__
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] calculate time from dates

2013-07-11 Thread arun
Hi,
May be this helps:


dat1- read.table(text=
ID date
1 4/12/2008
1 4/13/2008
1 5/11/2008
2 3/21/2009
2 4/22/2009
2 8/05/2009
,sep=,header=TRUE,stringsAsFactors=FALSE)
library(mondate)
M1- mondate(dat1[,2])
M2- mondate(01/01/2008)
dat1$month-as.numeric(abs(floor(MonthsBetween(M1,M2
 dat1
#  ID  date month
#1  1 4/12/2008 4
#2  1 4/13/2008 4
#3  1 5/11/2008 5
#4  2 3/21/2009    15
#5  2 4/22/2009    16
#6  2 8/05/2009    20
A.K.



- Original Message -
From: Gallon Li gallon...@gmail.com
To: r-help r-h...@stat.math.ethz.ch
Cc: 
Sent: Thursday, July 11, 2013 5:56 AM
Subject: [R] calculate time from dates

My data are from 2008 to 2010, with repeated measures for same subjects. I
wish to compute number of months since january 2008.

The data are like the following:

ID date
1 4/12/2008
1 4/13/2008
1 5/11/2008
2 3/21/2009
2 4/22/2009
2 8/05/2009
...

the date column are in the format %m/%d/%y. i wish to obtain

ID month
1 4
1 4
1 5
2 15
2 16
2 20
...

also, for the same ID with two identical month, I only want to keep the
last one. can any expert help with this question?

    [[alternative HTML version deleted]]

__
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] calculate time from dates

2013-07-11 Thread Rui Barradas

Hello,

The functions in stackoverflow need a date 'format' argument.



# Functions from
# 
http://stackoverflow.com/questions/1995933/number-of-months-between-two-dates

# with a 'format' argument added
#
# turn a date into a 'monthnumber' relative to an origin
monnb - function(d, format = %Y-%m-%d) {
lt - as.POSIXlt(as.Date(d, origin=1900-01-01, format = format))
lt$year*12 + lt$mon
}
# compute a month difference as a difference between two monnb's
mondf - function(d1, d2, format = %Y-%m-%d) {
monnb(d2, format = format) - monnb(d1, format = format)
}


dat1 - read.table(text = 
ID date
1 4/12/2008
1 4/13/2008
1 5/11/2008
2 3/21/2009
2 4/22/2009
2 8/05/2009
, header = TRUE)

dat2 - data.frame(ID = dat1$ID, month = mondf(01/01/2008, dat1$date, 
format = %m/%d/%Y) + 1)


# Now keep just the last one if month diffs are equal
result - with(dat2, aggregate(month, list(ID, month), FUN = tail, 1))[1:2]
names(result) - names(dat2)
result


Hope this helps,

Rui Barradas

Em 11-07-2013 11:03, andrija djurovic escreveu:

Hi.

See
http://stackoverflow.com/questions/1995933/number-of-months-between-two-dates

Andrija


On Thu, Jul 11, 2013 at 11:56 AM, Gallon Li gallon...@gmail.com wrote:


My data are from 2008 to 2010, with repeated measures for same subjects. I
wish to compute number of months since january 2008.

The data are like the following:

ID date
1 4/12/2008
1 4/13/2008
1 5/11/2008
2 3/21/2009
2 4/22/2009
2 8/05/2009
...

the date column are in the format %m/%d/%y. i wish to obtain

ID month
1 4
1 4
1 5
2 15
2 16
2 20
...

also, for the same ID with two identical month, I only want to keep the
last one. can any expert help with this question?

 [[alternative HTML version deleted]]

__
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.



[[alternative HTML version deleted]]

__
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.