[R] how to combine two data frames via factors (or somehow else)

Joshua Wiley jwiley.psych at gmail.com
Sun May 29 23:21:14 CEST 2011


Hi Philipp,


## Read in your data
## posting the output of dput() would have made our lives easier
d1 <- read.table(textConnection("x y
1 a X
2 b X
3 c X
4 f Z
5 e Z
6 g Z"), header = TRUE, row.names = 1)
d2 <- read.table(textConnection(" y1 y2
1  X W
2  Z W"), header = TRUE, row.names = 1)
closeAllConnections()

## Solution using merge()
dboth <- merge(d1, d2, by.x = "y", by.y = "y1")

## an alternate solution in this case
d1.alt <- d1
d1.alt$owner <- d2[d2$y1[d1$y], "y2"]

## Compare them
dboth
d1.alt

Hope this helps,

Josh

On Sun, May 29, 2011 at 1:51 PM, Philipp Chapkovski
<chapkovski at gmail.com> wrote:
> Hello!
> The question should be very naive, but I am a beginner and stuck with
> this unfortunately.
> There is a dataset of people's affiliation to companies that looks
> like that (a data frame actually)
>  x y
> 1 a X
> 2 b X
> 3 c X
> 4 f Z
> 5 e Z
> 6 g Z
> where x is a name of a person and y is a company name. That is, a,b,c
> work in a company X. f,e,g work in a company Z.
>
> and there is another dataset with the affiliation of companies. Like
> that (much much longer in reality):
>  y1 y2
> 1  X W
> 2  Z W
> that means that both X and Z belongs to the same company W.
> What is the most compact way (without loops etc) to 'attach' the 'head
> company' from the second dataset to the first dataset so I can have
> something like:
>
>  x  y owner
> 1 a X W
> ...
> 4 f  Z W
>
> I know it should be done somehow with factors, but I don't know how.
> Thank you in advance!
>
> ______________________________________________
> 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.
>



-- 
Joshua Wiley
Ph.D. Student, Health Psychology
University of California, Los Angeles
http://www.joshuawiley.com/



More information about the R-help mailing list