siddu479
2012-Oct-13 14:48 UTC
[R] Filtering few column from one data frame based on another data frame
Dear R-Users and experts, This is my first post in this forum. I have two csv files file1 and file2. file1(many rows and columns) is read into dataframe *data1* File2 is read into dataframe *data2* which have only one column of data which contains the column names that need to be removed from dataframe *data1*columns and update the *data1 *data frame. Example: data1 <-read.csv(file1.......,header=T) Sno,Data_1,Data_2,Data_3 1,2,3,4 data2<- read.csv(file2,......header=F) Data_2 Data_3 The output *data1.new* data frame should be like this Sno,Data_1 1,2 So I request the R code to accomplish this task. Regards Sidda -- View this message in context: http://r.789695.n4.nabble.com/Filtering-few-column-from-one-data-frame-based-on-another-data-frame-tp4646072.html Sent from the R help mailing list archive at Nabble.com.
siddu479
2012-Oct-13 15:39 UTC
[R] Filtering few column from one data frame based on another data frame
Thanks Arun for your quick reply.. Short code.. but brilliant. It works very well for my requirement. My actual data has thousands of columns fed into random forest model where I need to remove some of the columns fed from another file by keep adding/removing the input sensors. Thanks once again. Bye -- View this message in context: http://r.789695.n4.nabble.com/Filtering-few-column-from-one-data-frame-based-on-another-data-frame-tp4646072p4646076.html Sent from the R help mailing list archive at Nabble.com.
Rui Barradas
2012-Oct-13 16:10 UTC
[R] Filtering few column from one data frame based on another data frame
Hello, Try the following. keep <- which(!names(data2) %in% names(data1)) data1[, keep] Hope this helps, Rui Barradas Em 13-10-2012 15:48, siddu479 escreveu:> Dear R-Users and experts, > This is my first post in this forum. > > I have two csv files file1 and file2. > file1(many rows and columns) is read into dataframe *data1* > File2 is read into dataframe *data2* which have only one column of data > which contains the column names that need to be removed from dataframe > *data1*columns and update the *data1 *data frame. > Example: > data1 <-read.csv(file1.......,header=T) > Sno,Data_1,Data_2,Data_3 > 1,2,3,4 > > data2<- read.csv(file2,......header=F) > Data_2 > Data_3 > > The output *data1.new* data frame should be like this > > Sno,Data_1 > 1,2 > > So I request the R code to accomplish this task. > > Regards > Sidda > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/Filtering-few-column-from-one-data-frame-based-on-another-data-frame-tp4646072.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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.
Jeff Newmiller
2012-Oct-13 16:22 UTC
[R] Filtering few column from one data frame based on another data frame
I suggest you go back to the Introduction to R document supplied with the software and read about indexing. In particular, pay attention to indexing into a matrix or data frame using data1[rowspec,columnspec] syntax. There are three kinds of row and column specification types, and any of the the three can be used to solve your problem. --------------------------------------------------------------------------- Jeff Newmiller The ..... ..... Go Live... DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go... Live: OO#.. Dead: OO#.. Playing Research Engineer (Solar/Batteries O.O#. #.O#. with /Software/Embedded Controllers) .OO#. .OO#. rocks...1k --------------------------------------------------------------------------- Sent from my phone. Please excuse my brevity. siddu479 <onlyfordigitalstuff at gmail.com> wrote:>Dear R-Users and experts, >This is my first post in this forum. > >I have two csv files file1 and file2. >file1(many rows and columns) is read into dataframe *data1* >File2 is read into dataframe *data2* which have only one column of data >which contains the column names that need to be removed from dataframe >*data1*columns and update the *data1 *data frame. >Example: >data1 <-read.csv(file1.......,header=T) >Sno,Data_1,Data_2,Data_3 >1,2,3,4 > >data2<- read.csv(file2,......header=F) >Data_2 >Data_3 > >The output *data1.new* data frame should be like this > >Sno,Data_1 >1,2 > >So I request the R code to accomplish this task. > >Regards >Sidda > > > > >-- >View this message in context: >http://r.789695.n4.nabble.com/Filtering-few-column-from-one-data-frame-based-on-another-data-frame-tp4646072.html >Sent from the R help mailing list archive at Nabble.com. > >______________________________________________ >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.
arun
2012-Oct-13 18:13 UTC
[R] Filtering few column from one data frame based on another data frame
Hi Rui, By running your code on an example dataset: set.seed(1) dat1<-data.frame(Sno=sample(1:50,10,replace=TRUE),Data_1=rnorm(10,15),Data_2=rnorm(10,25),Data_3=runif(10,0.5)) dat2<-read.table(text=" Data_2 Data_3 ",sep="",header=FALSE,stringsAsFactors=FALSE) keep <- which(!names(dat2) %in% names(dat1)) dat1[, keep] #[1] 14 19 29 46 11 45 48 34 32? 4 I guess, the OP needs both "Sno" and "Data_1" i the resultant dataframe. #My code: res<-dat1[!colnames(dat1)%in%dat2[,1]] head(res) # Sno?? Data_1 #1? 14 14.17953 #2? 19 15.48743 #3? 29 15.73832 #4? 46 15.57578 #5? 11 14.69461 #6? 45 16.51178 A.K. ----- Original Message ----- From: Rui Barradas <ruipbarradas at sapo.pt> To: siddu479 <onlyfordigitalstuff at gmail.com> Cc: r-help at r-project.org Sent: Saturday, October 13, 2012 12:10 PM Subject: Re: [R] Filtering few column from one data frame based on another data frame Hello, Try the following. keep <- which(!names(data2) %in% names(data1)) data1[, keep] Hope this helps, Rui Barradas Em 13-10-2012 15:48, siddu479 escreveu:> Dear R-Users and experts, > This is my first post in this forum. > > I have two csv files file1 and file2. > file1(many rows and columns) is read into dataframe *data1* > File2 is read into dataframe *data2* which have only one column of data > which contains the column names that need to be removed from dataframe > *data1*columns and update the *data1 *data frame. > Example: > data1 <-read.csv(file1.......,header=T) > Sno,Data_1,Data_2,Data_3 > 1,2,3,4 > > data2<- read.csv(file2,......header=F) > Data_2 > Data_3 > > The output *data1.new* data frame? should be like this > > Sno,Data_1 > 1,2 > > So I request the R code to accomplish this task. > > Regards > Sidda > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/Filtering-few-column-from-one-data-frame-based-on-another-data-frame-tp4646072.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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.______________________________________________ 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.