[R] Problem accessing "row number" from subset on a dataframe
William Dunlap
wdunlap at tibco.com
Wed May 27 00:03:46 CEST 2009
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Jason Rupert
> Sent: Tuesday, May 26, 2009 1:55 PM
> To: Mark Wardle
> Cc: R-help at r-project.org
> Subject: Re: [R] Problem accessing "row number" from subset
> on a dataframe
>
>
> Mark,
>
> I really apprecaite your response and continue to be amazed
> by the responsiveness and support on the R forums.
>
> And, well actually, I would like to get the "row number"(s)
> and then delete or not via the row number.
Deleting by row number can lead to incorrect answers
if you are not careful to dispose of the no-rows case
specially, since when length(rowNumbers)==0,
x[rowNumbers,]
and
x[-rowNumbers,]
will return the same thing, the entire matrix or data.frame.
If you use logical subscripts this is not a
special case, you just use x[!rowSatisfiesCondition,]
whether or not any row satisfies the condition.
(Sometimes using integer instead of logical subscripts
can save memory, but you need a pretty big problem
to notice that.)
> d<-data.frame(x=11:14,y=letters[11:14])
> xIsFive <- d$x==5
> whichXIsFive <- which(xIsFive)
> d[ !xIsFive, ] # correct
x y
1 11 k
2 12 l
3 13 m
4 14 n
> d[ -whichXIsFive, ] # not what is wanted
[1] x y
<0 rows> (or 0-length row.names)
> Again, I really appreciate the response...
>
> --- On Tue, 5/26/09, Mark Wardle <mark at wardle.org> wrote:
>
> > From: Mark Wardle <mark at wardle.org>
> > Subject: Re: [R] Problem accessing "row number" from subset
> on a dataframe
> > To: "Jason Rupert" <jasonkrupert at yahoo.com>
> > Cc: R-help at r-project.org
> > Date: Tuesday, May 26, 2009, 3:18 PM
> > Hi. I may be missing what you're
> > trying to achieve, but...
> >
> > what about
> >
> > subset(airquality, airquality$Month!=6)
> >
> > instead?
> >
> > You can do arbitrarily complex queries if you wish,
> > combining terms logically.
> >
> > You don't have to use the subset function. You may find it
> > helpful to
> > see what the following result in:
> >
> > airquality$Month==6
> > airquality[airquality$Month==6, ]
> > airquality[airquality$Month==6, ]
> >
> > There are ways of getting the row numbers, but I suspect
> > you don't
> > actually need to do that, do you?
> >
> > Best wishes,
> >
> > Mark
> >
> > 2009/5/26 Jason Rupert <jasonkrupert at yahoo.com>:
> > >
> > >
> > > I would like to use the "row number" information
> > returned from performing a subset command on a dataframe.
> > >
> > > For example, I would like to automatically delete some
> > rows from a dataframe if they match a criteria. Here is my
> > example below.
> > >
> > > data(airquality)
> > > names(airquality)
> > > subset(airquality, airquality$Month == 6)
> > >
> > > Now how do I delete the row numbers returned
> > automatically?
> > >
> > > I know I can type
> > > airquality_mod<-airquality[-c(32:60)]
> > >
> > > However, I would like to check the row information and
> > then use it to delete the stuff out of the dataframe.
> > >
> > > Thank again for any feedback and insights.
> > >
> > > ______________________________________________
> > > 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.
> > >
> > >
> >
> >
> >
> > --
> > Dr. Mark Wardle
> > Specialist registrar, Neurology
> > Cardiff, UK
> >
>
>
>
>
> ______________________________________________
> 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.
>
More information about the R-help
mailing list