I have two collections of dates and I want to figure out what dates they have in common. This is not giving me what I want (I don't know what it is giving me). What is the best way to do this? Tom> data1[1] "1948-02-24 EST" "1949-04-12 EST" "1950-05-29 EDT" "1951-05-21 EDT" [5] "1951-12-20 EST" "1953-01-22 EST" "1955-02-28 EST" "1956-03-08 EST" [9] "1957-03-22 EST" "1958-02-07 EST"> data2[1] "1948-02-24 EST" "1949-04-12 EST" "1950-05-29 EDT" "1951-05-21 EDT" [5] "1951-12-20 EST" "1953-01-22 EST" "1955-02-28 EST" "1956-03-08 EST" [9] "1957-03-22 EST" "1958-02-07 EST"> intersect(data1,data2)[1] -689626800 -653943600 -618350400 -587505600 -569098800 -534625200 [7] -468356400 -436042800 -403297200 -375476400 -- View this message in context: http://www.nabble.com/Dates-in-Common-tp21624909p21624909.html Sent from the R help mailing list archive at Nabble.com.
you want:
ans <- intersect(data1,data2)
class(ans) <- c("POSIXt","POSIXct")
I personally think intersect should preserve the class of the object
(if both args have the same class), but I think r-core has a different
opinion.
-Whit
On Fri, Jan 23, 2009 at 9:02 AM, Tom La Bone <booboo at gforcecable.com>
wrote:>
> I have two collections of dates and I want to figure out what dates they
have
> in common. This is not giving me what I want (I don't know what it is
giving
> me). What is the best way to do this?
>
> Tom
>
>> data1
> [1] "1948-02-24 EST" "1949-04-12 EST" "1950-05-29
EDT" "1951-05-21 EDT"
> [5] "1951-12-20 EST" "1953-01-22 EST" "1955-02-28
EST" "1956-03-08 EST"
> [9] "1957-03-22 EST" "1958-02-07 EST"
>> data2
> [1] "1948-02-24 EST" "1949-04-12 EST" "1950-05-29
EDT" "1951-05-21 EDT"
> [5] "1951-12-20 EST" "1953-01-22 EST" "1955-02-28
EST" "1956-03-08 EST"
> [9] "1957-03-22 EST" "1958-02-07 EST"
>> intersect(data1,data2)
> [1] -689626800 -653943600 -618350400 -587505600 -569098800 -534625200
> [7] -468356400 -436042800 -403297200 -375476400
> --
> View this message in context:
http://www.nabble.com/Dates-in-Common-tp21624909p21624909.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.
>
The problem is in the intersect function that does x = as.vector(x) and therefore transforms date vector into a numeric . Try to: d1 = as.character(data1) ; d2 = as.character(data2) d = intersect(d1, d2) data = as.Date(d) A. Tom La Bone wrote:> I have two collections of dates and I want to figure out what dates they have > in common. This is not giving me what I want (I don't know what it is giving > me). What is the best way to do this? > > Tom > > >> data1 >> > [1] "1948-02-24 EST" "1949-04-12 EST" "1950-05-29 EDT" "1951-05-21 EDT" > [5] "1951-12-20 EST" "1953-01-22 EST" "1955-02-28 EST" "1956-03-08 EST" > [9] "1957-03-22 EST" "1958-02-07 EST" > >> data2 >> > [1] "1948-02-24 EST" "1949-04-12 EST" "1950-05-29 EDT" "1951-05-21 EDT" > [5] "1951-12-20 EST" "1953-01-22 EST" "1955-02-28 EST" "1956-03-08 EST" > [9] "1957-03-22 EST" "1958-02-07 EST" > >> intersect(data1,data2) >> > [1] -689626800 -653943600 -618350400 -587505600 -569098800 -534625200 > [7] -468356400 -436042800 -403297200 -375476400 >