[R] omitting columns from a data frame
David Winsemius
dwinsemius at comcast.net
Tue Jun 21 13:01:33 CEST 2011
On Jun 21, 2011, at 12:22 AM, Joshua Wiley wrote:
> On Mon, Jun 20, 2011 at 8:55 PM, Erin Hodgess
> <erinm.hodgess at gmail.com> wrote:
>> Too funny!
>>
>> how about subset?
>
> Sure, that is one option. Each of the following will also work. The
> ones wrapped with c() can easily omit more than one at a time.
>
> mtcars[, -which(names(mtcars) == "drat")]
> mtcars[, names(mtcars) != "drat"]
> mtcars[, !names(mtcars) %in% c("drat")]
> mtcars[, -match(c("drat"), names(mtcars))]
I like to use grep (which returns a numeric index suitable for
negating) since it generalizes better:
# exact match pattern:
mtcars[ , -grep("^drat$", names(mtcars) ) ]
#approximate, drop any name starting with "dra":
mtcars[ , -grep("^dra", names(mtcars) ) ]
#approximate, drop any name containing "dra":
mtcars[ , -grep("drat", names(mtcars) ) ]
And since the columns are actually list elements which can be
addressed as numbers these are each equivalent to:
# exact match pattern:
mtcars[ -grep("^drat$", names(mtcars) ) ]
#approximate drop any name starting with "dra":
mtcars[ -grep("^dra", names(mtcars) ) ]
#approximate, drop any name containing "dra":
mtcars[ -grep("drat", names(mtcars) ) ]
--
David
>
>>
>> On Mon, Jun 20, 2011 at 10:52 PM, Joshua Wiley <jwiley.psych at gmail.com
>> > wrote:
>>> Hi Erin,
>>>
>>> See inline.
>>>
>>> On Mon, Jun 20, 2011 at 8:45 PM, Erin Hodgess <erinm.hodgess at gmail.com
>>> > wrote:
>>>> Dear R People:
>>>>
>>>> I have a data frame, xm1, which has 12 rows and 4 columns.
>>>>
>>>> If I put is xm1[,-4], I get all rows, and columns 1 - 3, which is
>>>> as
>>>> it should be.
>>>
>>> Okay, so you know how to use the column number to omit columns.
>>>
>>>>
>>>> Now, is there a way to use the names of the columns to omit them,
>>>> please?
>>>
>>> You have all the pieces (the column names, and the knowledge that
>>> you
>>> can omit columns by their index).
>>>
>>> Homework: find a way to return the column numbers given the column
>>> names (hint).
>>>
>>> Cheers,
>>>
>>> Josh
>>>
>>>
>>>
>>>>
>>>> Thanks so much in advance!
>>>>
>>>> Sincerely,
>>>> Erin
>>>>
>>>>
>>>> --
>>>> Erin Hodgess
>>>> Associate Professor
>>>> Department of Computer and Mathematical Sciences
>>>> University of Houston - Downtown
>>>> mailto: erinm.hodgess at gmail.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.
>>>>
>>>
>>>
>>>
>>> --
>>> Joshua Wiley
>>> Ph.D. Student, Health Psychology
>>> University of California, Los Angeles
>>> http://www.joshuawiley.com/
>>>
>>
>>
>>
>> --
>> Erin Hodgess
>> Associate Professor
>> Department of Computer and Mathematical Sciences
>> University of Houston - Downtown
>> mailto: erinm.hodgess at gmail.com
>>
>
>
>
> --
> Joshua Wiley
> Ph.D. Student, Health Psychology
> University of California, Los Angeles
> http://www.joshuawiley.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.
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list