[R] indexing question
Adrian Dusa
adi at roda.ro
Wed May 19 18:01:47 CEST 2004
Many many thanks.
merge is the function I needed.
Regards,
Adrian
-----Original Message-----
From: Sundar Dorai-Raj [mailto:sundar.dorai-raj at PDF.COM]
Sent: Wednesday, May 19, 2004 6:54 PM
To: Adrian Dusa
Cc: r-help at stat.math.ethz.ch
Subject: Re: [R] indexing question
Adrian Dusa wrote:
> Hi,
>
> I have a problem and a rather poor solution that I would like to
> improve. There a 2 datasets with different number of cases like this:
>
> Dataset 'poploc' Dataset 'siruta'
>
> Case no. SIRUTA TYPE Case no. SIRUTA
TYPE
> 1 1017 0 1 1017
3
> 2 1026 0 2 1020
5
> 3 42711 0 3 1026
4
> . .
> 13000 100234 0 .
> 16000 160241
3
>
> I want to bring the TIP variable in the 'poploc' dataset according to
> the
> SIRUTA variable (which has unique codes for each case, in both
datasests).
> The resulting dataset 'poploc' should look like this:
>
> Case no. SIRUTA TYPE
> 1 1017 3
> 2 1026 4
> 3 42711 3
>
> 13000 100234 5
>
> My current solution involves a combination of FOR looping and
> indexing, which
> takes about 3 minutes to complete.
>
> for (i in 1:nrow(siruta))
> poploc$TIP[poploc$SIRUTA %in% siruta$SIRUTA[i]] <- siruta$TIP[i]
>
> I'm sure there are more clever solutions, any help appreciated. Thank
> you! Adrian
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
I think you are looking for ?merge.
# note that poploc has no `TYPE' column
poploc <- data.frame(no = 1:3, SIRUTA = c(1017, 1026, 42711)) siruta <-
data.frame(no = c(1:3, 16000),
SIRUTA = c(1017, 1026, 42711, 160241),
TYPE = c(3, 5, 4, 3))
merge(poploc, siruta)
More information about the R-help
mailing list