[R] Merge rows

David Stevens david.stevens at usu.edu
Sat Jul 12 16:33:45 CEST 2014


This is a (very) slightly modified version of Jim's reply that takes the 
sender's email our of the list element and uses it as the name so it can 
be accessed as newdat$'senders email' or newdat[['senders email']]

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

David

On 7/12/2014 1:07 AM, Jim Lemon wrote:
> 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
>
> ______________________________________________
> 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.

-- 
David K Stevens, P.E., Ph.D.
Professor and Head, Environmental Engineering
Civil and Environmental Engineering
Utah Water Research Laboratory
8200 Old Main Hill
Logan, UT  84322-8200
435 797 3229 - voice
435 797 1363 - fax
david.stevens at usu.edu



More information about the R-help mailing list