[R] Keep rows where a variable matches one item of a vector

Sarah Goslee sarah.goslee at gmail.com
Thu Jan 12 21:57:33 CET 2012


Hi,

On Thu, Jan 12, 2012 at 3:10 PM, dadrivr <dadrivr at gmail.com> wrote:
> How do I subset data to only keep those rows of a dataframe where a
> variable's value matches one item of a vector.  For example, how do I keep
> all of the rows (and all variables) where mydata$id equals one of the values
> in keepid?  See below?
>
> mydata <- NULL
> mydata$id <- 1:30
> mydata$value <- seq(from=1,to=100, length.out=30)
> keepid <- c(6,10,12,13,19,25,26,27,28,29)

You won't get two columns unless you create a data frame rather than a
regular list.

mydata <- data.frame(id = 1:30, value = seq(from=1,to=100, length.out=30))

> In other words, I want the output file to have two columns, 1) id and 2)
> value, with only those rows where id equals one of the values in the keepid
> vector.  Thanks for your help!

Here are two ways; more exist.

mydata[mydata$id %in% keepid, ]
subset(mydata, mydata$id %in% keepid)

Thanks for including a small reproducible example.

Sarah

-- 
Sarah Goslee
http://www.functionaldiversity.org



More information about the R-help mailing list