Skip to content

Filtering few column from one data frame based on another data frame

5 messages · siddu479, Jeff Newmiller, arun +1 more

#
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.
#
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:
#
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:

            
#
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:
______________________________________________
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.
#
Hello,

You're right, that's the result of not having test data (and being in a 
hurry).
Anyway, apologies to the op, and thanks for the correction.

Rui Barradas
Em 13-10-2012 19:13, arun escreveu: