[R] match() indexing
Hane, Christopher A
christopher.hane at ingenixconsulting.com
Wed Jul 1 20:51:03 CEST 2009
Hello,
I'm trying to vectorize some assignment statements using match(), but
can't seem to get it correct.
I have 2 data frames each with a key column of unique values. I want to
copy a column from one frame to another where the key values are the
same. The data frames are not the same length, and the set of keys is
non-overlapping (each frame has keys not in the other).
Example:
x <- data.frame(id=c(1,3,4,6,7,9,10), r=runif(7))
> x
id r
1 1 0.4243219
2 3 0.2389127
3 4 0.7094532
4 6 0.2053836
5 7 0.9630027
6 9 0.1218458
7 10 0.9183175
> y <- data.frame(id=c(1,2,4,7,8,9,10,11,12))
> y
id
1 1
2 2
3 4
4 7
5 8
6 9
7 10
8 11
9 12
I want to copy the x$r values to y to obtain
>y
id r
1 1 0.4243219
2 2 NA
3 4 0.7094532
4 7 0.9630027
5 8 NA
6 9 0.1218458
7 10 0.9183175
8 11 NA
9 12 NA
xIdx <- match(x$id,y$id) yields a vector of length x, so it cannot be
used directly to copy to y.
Any help in vectorizing this assignment would be most welcome.
Chris
This e-mail, including attachments, may include confidential and/or
proprietary information, and may be used only by the person or entity
to which it is addressed. If the reader of this e-mail is not the intended
recipient or his or her authorized agent, the reader is hereby notified
that any dissemination, distribution or copying of this e-mail is
prohibited. If you have received this e-mail in error, please notify the
sender by replying to this message and delete this e-mail immediately.
More information about the R-help
mailing list