HI,
I am not sure about your DataN1 column.  If there is any identifier to 
differentiate the comments (in this case 1,2,3), then it will easier to place 
that in the correct column.
  My previous solution is not helpful in situations like these:
dat2<-read.table(text="
Row_ID_N,  Src_Row_ID,  DataN1
1a,              1,                  This is comment 1
2a,              1,                  This is comment 2
3a,              2,                  This is comment 2
4a,              1,                  This is comment 3
",sep=",",header=TRUE,stringsAsFactors=FALSE)
dat3<-read.table(text="
Row_ID_N,  Src_Row_ID,  DataN1
1a,              1,                  This is comment 1
2a,              1,                  This is comment 2
3a,              2,                  This is comment 3
4a,              1,                  This is comment 3
5a,         2,                  This is comment 2 
",sep=",",header=TRUE,stringsAsFactors=FALSE)


library(stringr)
library(plyr)
fun1<- function(data1,data2){
    data2$DataN1<- str_trim(data2$DataN1)    
        res<- merge(data1,data2,by.x=1,by.y=2)
    res1<- res[,-5]
    res2<- 
ddply(res1,.(Row_ID_CR,Data1,Data2,Data3),summarize,DataN1=list(DataN1))
    Mx1<- max(sapply(res2[,5],length))
    res3<- data.frame(res2[,-5],do.call(rbind,lapply(res2[,5],function(x){
                                  indx<- as.numeric(gsub("[[:alpha:]]","",x))
                                  x[match(seq(Mx1),indx)]
                                  })),stringsAsFactors=FALSE)
    colnames(res3)[grep("X",colnames(res3))]<- 
paste0("DataComment",gsub("[[:alpha:]]","",colnames(res3)[grep("X",colnames(res3))]))
    res3
    }           
fun1(dat1,dat2)
#  Row_ID_CR                Data1        Data2        Data3      DataComment1
#1         1                   aa           bb           cc This is comment 1
#2         2                   dd           ee           ff              <NA>
#       DataComment2      DataComment3
#1 This is comment 2 This is comment 3
#2 This is comment 2              <NA>
 fun1(dat1,dat3)
#  Row_ID_CR                Data1        Data2        Data3      DataComment1
#1         1                   aa           bb           cc This is comment 1
#2         2                   dd           ee           ff              <NA>
#       DataComment2      DataComment3
#1 This is comment 2 This is comment 3
#2 This is comment 2 This is comment 3


A.K.


----- Original Message -----
From: arun <smartpink...@yahoo.com>
To: Shreya Rawal <rawal.shr...@gmail.com>
Cc: R help <r-help@r-project.org>
Sent: Monday, June 10, 2013 6:41 PM
Subject: Re: [R] Combining CSV data

Hi,
Try this:

dat1<-read.table(text="
Row_ID_CR,  Data1,    Data2,    Data3
1,                  aa,          bb,          cc
2,                  dd,          ee,          ff
",sep=",",header=TRUE,stringsAsFactors=FALSE)

dat2<-read.table(text="
Row_ID_N,  Src_Row_ID,  DataN1
1a,              1,                  This is comment 1
2a,              1,                  This is comment 2
3a,              2,                  This is comment 1
4a,              1,                  This is comment 3
",sep=",",header=TRUE,stringsAsFactors=FALSE)
library(stringr)
dat2$DataN1<-str_trim(dat2$DataN1)
res<- merge(dat1,dat2,by.x=1,by.y=2)
 res1<-res[,-5]
library(plyr)
 res2<-ddply(res1,.(Row_ID_CR,Data1,Data2,Data3),summarize, DataN1=list(DataN1))
 res2
 # Row_ID_CR                Data1        Data2        Data3
#1         1                   aa           bb           cc
#2         2                   dd           ee           ff
#                                                   DataN1
#1 This is comment 1, This is comment 2, This is comment 3
#2                                       This is comment 1



res3<-data.frame(res2[,-5],t(apply(do.call(rbind,res2[,5]),1,function(x) 
{x[duplicated(x)]<-NA;x})))
 colnames(res3)[grep("X",colnames(res3))]<- 
paste0("DataComment",gsub("[[:alpha:]]","",colnames(res3)[grep("X",colnames(res3))]))
res3
#  Row_ID_CR                Data1        Data2        Data3      DataComment1
#1         1                   aa           bb           cc This is comment 1
#2         2                   dd           ee           ff This is comment 1
#       DataComment2      DataComment3
#1 This is comment 2 This is comment 3
#2              <NA>              <NA>

A.K.


----- Original Message -----
From: Shreya Rawal <rawal.shr...@gmail.com>
To: r-help@r-project.org
Cc: 
Sent: Monday, June 10, 2013 4:38 PM
Subject: [R] Combining CSV data

Hello R community,

I am trying to combine two CSV files that look like this:

File A

Row_ID_CR,   Data1,    Data2,    Data3
1,                   aa,          bb,          cc
2,                   dd,          ee,          ff


File B

Row_ID_N,   Src_Row_ID,   DataN1
1a,               1,                   This is comment 1
2a,               1,                   This is comment 2
3a,               2,                   This is comment 1
4a,               1,                   This is comment 3

And the output I am looking for is, comparing the values of Row_ID_CR and
Src_Row_ID

Output

ROW_ID_CR,    Data1,    Data2,    Data3,    DataComment1,
DataComment2,          DataComment3
1,                      aa,         bb,         cc,        This is
comment1,    This is comment2,     This is comment 3
2,                      dd,          ee,         ff,          This is
comment1


I am a novice R user, I am able to replicate a left join but I need a bit
more in the final result.


Thanks!!

    [[alternative HTML version deleted]]

______________________________________________
R-help@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.


______________________________________________
R-help@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.

Reply via email to