[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