[R] Merge rows

Jim Lemon jim at bitwrit.com.au
Sat Jul 12 09:07:24 CEST 2014


On Fri, 11 Jul 2014 12:19:39 PM Ryan de Vera wrote:
> Hello all,
> 
> I have a data frame filled with senders and recipients. Some of the 
senders
> have multiple rows with different recipients and I want to merge 
those
> rows. For example I have
> 
> a at email.com     b at email.com
> a at email.com     c at email.com     d at email.com
> r at email.com      f at email.com
> r at email.com      h at email.com
> 
> I want this to become
> 
> a at email.com     b at email.com     c at email.com     d at email.com
> r at email.com      f at email.com      h at email.com
> 
> How would I go about doing this?
> 
Hi Ryan,
This is a bit messy, but assuming that you do have a data frame like 
this:

rdvdf<-
data.frame(sender=rep(c("a at email.com","r at email.com"),each=2),
 recipient1=c("b at email.com","c at email.com","f at email.com","h at email.com"),
 recipient2=c(NA,"d at email.com",NA,NA))

you can try this:

newdat<-list()
senderno<-1
for(sndr in unique(rdvdf$sender)) {
 newvec<-
  as.character(unique(unlist(rdvdf[rdvdf$sender==sndr,])))
 newdat[[senderno]]<-newvec[!is.na(newvec)]
 senderno<-senderno+1
}

Jim



More information about the R-help mailing list