Anindya Sankar Dey
2013-Aug-23 12:59 UTC
[R] Combining two tables without going through lot of ifelse statement
HI All, Suppose I have two table like below Table 1: 1 10 3 5 0 0 Table 2: 2 10 0 0 3 5 I need to create a new table like below Table 3: 1 10 2 10 3 10 The row may interchange in table 3, but is there any way to do this instead of writing lot of if-else and loops? Thanks in advance. -- Anindya Sankar Dey [[alternative HTML version deleted]]
arun
2013-Aug-23 13:30 UTC
[R] Combining two tables without going through lot of ifelse statement
Hi, Try: dat1<- read.table(text=" 1 10 3? 5 0? 0 ",sep="",header=FALSE) dat2<- read.table(text=" 2 10 0? 0 3? 5 ",sep="",header=FALSE) res<-with(rbind(dat1,dat2),aggregate(V2~V1,FUN=sum)) res1<-res[res[,1]!=0,] ?res1 #? V1 V2 #2? 1 10 #3? 2 10 #4? 3 10 #or library(data.table) dt1<- data.table(rbind(dat1,dat2)) ?dt2<-subset(dt1[,sum(V2),by=V1],V1!=0) ?setnames(dt2,2,"V2") ?dt2 #?? V1 V2 #1:? 1 10 #2:? 3 10 #3:? 2 10 A.K. ----- Original Message ----- From: Anindya Sankar Dey <anindya55 at gmail.com> To: r-help <r-help at r-project.org> Cc: Sent: Friday, August 23, 2013 8:59 AM Subject: [R] Combining two tables without going through lot of ifelse statement HI All, Suppose I have two table like below Table 1: 1 10 3? 5 0? 0 Table 2: 2 10 0? 0 3? 5 I need to create a new table like below Table 3: 1 10 2 10 3 10 The row may interchange in table 3, but is there any way to do this instead of writing lot of if-else and loops? Thanks in advance. -- Anindya Sankar Dey ??? [[alternative HTML version deleted]] ______________________________________________ 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.
Rui Barradas
2013-Aug-23 13:31 UTC
[R] Combining two tables without going through lot of ifelse statement
Hello, Try the following. x1 <- read.table(text = " 1 10 3 5 0 0 ") x2 <- read.table(text = " 2 10 0 0 3 5 ") x3 <- merge(x1, x2, by = "V1", all = TRUE) res <- data.frame(x3[1], sum = rowSums(x3[-1], na.rm = TRUE)) res <- res[-(res$sum == 0), ] res Hope this helps, Rui Barradas Em 23-08-2013 13:59, Anindya Sankar Dey escreveu:> HI All, > > Suppose I have two table like below > > Table 1: > > 1 10 > 3 5 > 0 0 > > Table 2: > > 2 10 > 0 0 > 3 5 > > > I need to create a new table like below > > Table 3: > > 1 10 > 2 10 > 3 10 > > The row may interchange in table 3, but is there any way to do this instead > of writing lot of if-else and loops? > > Thanks in advance. >
arun
2013-Aug-23 13:45 UTC
[R] Combining two tables without going through lot of ifelse statement
In the case of ?data.table() dt1<-data.table(rbind(as.matrix(dat1),as.matrix(dat2))) ## converted the data.frame to matrix to mimic the situation ?dt2<- subset(dt1[,sum(V2),by=V1],V1!=0) ?setnames(dt2,2,"V2") ?dt2 #?? V1 V2 #1:? 1 10 #2:? 3 10 #3:? 2 10 #or ?res<-with(as.data.frame(rbind(as.matrix(dat1),as.matrix(dat2))),aggregate(V2~V1,FUN=sum)) ?res1<- res[res[,1]!=0,] ?res1 #? V1 V2 #2? 1 10 #3? 2 10 #4? 3 10 A.K. ________________________________ From: Anindya Sankar Dey <anindya55 at gmail.com> To: arun <smartpink111 at yahoo.com> Sent: Friday, August 23, 2013 9:40 AM Subject: Re: [R] Combining two tables without going through lot of ifelse statement Mine is matrices, will this work on matrices as well? Thank for your help On Fri, Aug 23, 2013 at 7:02 PM, arun <smartpink111 at yahoo.com> wrote: However it is not clear when you mention these are tables.? There is ?table() and ?data.frame and the structure will be different in each case.? Here, I assumed that your table is data.frame..> > > > >----- Original Message ----- >From: arun <smartpink111 at yahoo.com> >To: Anindya Sankar Dey <anindya55 at gmail.com> >Cc: R help <r-help at r-project.org> >Sent: Friday, August 23, 2013 9:30 AM >Subject: Re: [R] Combining two tables without going through lot of ifelse ? ? ? statement > >Hi, >Try: > >dat1<- read.table(text=" >1 10 >3? 5 >0? 0 >",sep="",header=FALSE) >dat2<- read.table(text=" >2 10 >0? 0 >3? 5 >",sep="",header=FALSE) >res<-with(rbind(dat1,dat2),aggregate(V2~V1,FUN=sum)) >res1<-res[res[,1]!=0,] >?res1 >#? V1 V2 >#2? 1 10 >#3? 2 10 >#4? 3 10 > >#or >library(data.table) >dt1<- data.table(rbind(dat1,dat2)) >?dt2<-subset(dt1[,sum(V2),by=V1],V1!=0) >?setnames(dt2,2,"V2") >?dt2 >#?? V1 V2 >#1:? 1 10 >#2:? 3 10 >#3:? 2 10 > >A.K. > >----- Original Message ----- >From: Anindya Sankar Dey <anindya55 at gmail.com> >To: r-help <r-help at r-project.org> >Cc: >Sent: Friday, August 23, 2013 8:59 AM >Subject: [R] Combining two tables without going through lot of ifelse??? statement > >HI All, > >Suppose I have two table like below > >Table 1: > >1 10 >3? 5 >0? 0 > >Table 2: > >2 10 >0? 0 >3? 5 > > >I need to create a new table like below > >Table 3: > >1 10 >2 10 >3 10 > >The row may interchange in table 3, but is there any way to do this instead >of writing lot of if-else and loops? > >Thanks in advance. > >-- >Anindya Sankar Dey > >??? [[alternative HTML version deleted]] > >______________________________________________ >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. > >-- Anindya Sankar Dey