# Remove a complete row as per the Range in a Matrix

6 messages
Open this post in threaded view
|

## Remove a complete row as per the Range in a Matrix

 Hi, Here i have a Matrix MyMatrix <- Name            Age ---------           ------- ANTONY        27 IMRAN           30 RAJ                   22 NAHAS           32 GEO                 42 and here i have an array with Minimum and Maximum values. MinMaxArray  <- data.frame(MIN = 25,MAX=35) MIN     MAX ------     -------- 25           35 ------------------------------------------------------ Now what is, i need to get a matrix by removing the rows which is NOT coming the "Age"-column in between the MIN and MAX value.  Is it possible to avoid "for-loop", bcz its a huge matrix. so, final matrix looks like this, Name            Age ---------           ------- ANTONY        27 IMRAN           30 NAHAS           32 - Thanks in advance, Antony.
Open this post in threaded view
|

## Re: Remove a complete row as per the Range in a Matrix

 Hello, Please learn how to use dput(), it's not your first post. And try the following. myMatrix <- data.matrix(read.table(text=" Name            Age ANTONY        27 IMRAN           30 RAJ                   22 NAHAS           32 GEO                 42 ", header=TRUE)) MinMaxArray  <- data.frame(MIN = 25,MAX=35) inx <- MinMaxArray[[ "MIN" ]] <= myMatrix[, "Age"] & myMatrix[, "Age"] <= MinMaxArray[[ "MAX" ]] myMatrix[ inx , ] Hope this helps, Rui Barradas Em 31-07-2012 08:58, Rantony escreveu: > Hi, > > Here i have a Matrix > > MyMatrix <- > > Name            Age > ---------           ------- > ANTONY        27 > IMRAN           30 > RAJ                   22 > NAHAS           32 > GEO                 42 > > and here i have an array with Minimum and Maximum values. > MinMaxArray  <- data.frame(MIN = 25,MAX=35) > MIN     MAX > ------     -------- > 25           35 > ------------------------------------------------------ > Now what is, i need to get a matrix by removing the rows which is NOT coming > the "Age"-column in between the MIN and MAX value.  Is it possible to avoid > "for-loop", bcz its a huge matrix. > > so, final matrix looks like this, > > Name            Age > ---------           ------- > ANTONY        27 > IMRAN           30 > NAHAS           32 > > > - Thanks in advance, > Antony. > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/Remove-a-complete-row-as-per-the-Range-in-a-Matrix-tp4638508.html> Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > [hidden email] 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. ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Remove a complete row as per the Range in a Matrix

 In reply to this post by R_Antony Hi, Try this: myMatrix<-read.table(text=" Name            Age ANTONY        27 IMRAN          30 RAJ                  22 NAHAS          32 GEO                42 ",sep="",header=TRUE) MinMaxArray  <- data.frame(MIN = 25,MAX=35) myMatrix[myMatrix\$Age<=MinMaxArray\$MAX & myMatrix\$Age>=MinMaxArray\$MIN,]   #  Name Age #1 ANTONY  27 #2  IMRAN  30 #4  NAHAS  32 #or subset(myMatrix,myMatrix\$Age<=MinMaxArray\$MAX & myMatrix\$Age>=MinMaxArray\$MIN) #    Name Age #1 ANTONY  27 #2  IMRAN  30 #4  NAHAS  32 A.K. ----- Original Message ----- From: Rantony <[hidden email]> To: [hidden email] Cc: Sent: Tuesday, July 31, 2012 3:58 AM Subject: [R] Remove a complete row as per the Range in a Matrix Hi, Here i have a Matrix MyMatrix <- Name            Age ---------           ------- ANTONY        27 IMRAN           30 RAJ                   22 NAHAS           32 GEO                 42 and here i have an array with Minimum and Maximum values. MinMaxArray  <- data.frame(MIN = 25,MAX=35) MIN     MAX ------     -------- 25           35 ------------------------------------------------------ Now what is, i need to get a matrix by removing the rows which is NOT coming the "Age"-column in between the MIN and MAX value.  Is it possible to avoid "for-loop", bcz its a huge matrix. so, final matrix looks like this, Name            Age ---------           ------- ANTONY        27 IMRAN           30 NAHAS           32 - Thanks in advance, Antony. -- View this message in context: http://r.789695.n4.nabble.com/Remove-a-complete-row-as-per-the-Range-in-a-Matrix-tp4638508.htmlSent from the R help mailing list archive at Nabble.com. ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code. ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Remove a complete row as per the Range in a Matrix

 This post has NOT been accepted by the mailing list yet. In reply to this post by R_Antony Hi, Try this: myMatrix<-read.table(text=" Name            Age ANTONY        27 IMRAN          30 RAJ                  22 NAHAS          32 GEO                42 ",sep="",header=TRUE) MinMaxArray  <- data.frame(MIN = 25,MAX=35) myMatrix[myMatrix\$Age<=MinMaxArray\$MAX & myMatrix\$Age>=MinMaxArray\$MIN,]   #  Name Age #1 ANTONY  27 #2  IMRAN  30 #4  NAHAS  32 #or subset(myMatrix,myMatrix\$Age<=MinMaxArray\$MAX & myMatrix\$Age>=MinMaxArray\$MIN) #    Name Age #1 ANTONY  27 #2  IMRAN  30 #4  NAHAS  32 A.K.
Open this post in threaded view
|

## Re: Remove a complete row as per the Range in a Matrix

Open this post in threaded view
|

## Re: Remove a complete row as per the Range in a Matrix

 This post has NOT been accepted by the mailing list yet. In reply to this post by R_Antony Hi, You could also use ifelse. myDF <- read.table(text="Name            Age ANTONY        27 IMRAN           30 RAJ                   22 NAHAS           32 GEO                 42 ", sep="",header=TRUE) MinMax<-data.frame(Age=c(25,35))  myDF[ifelse(myDF\$Age < max(MinMax\$Age) & myDF\$Age > min(MinMax\$Age),TRUE,FALSE),]     Name Age 1 ANTONY  27 2  IMRAN  30 4  NAHAS  32 A.K.