Hi all, I'm trying to find something like the "==" operator that will work on vectors or something equivalent to SQL's "IN" function. For e.g., if I have: x <- c(1,2,3,4,5) y <- c("apples", "oranges", "grapes", "bananas", "pears") z <- data.frame (x,y) w <- c(2,4,5) I want R to return the values "oranges", "bananas", "pears" through some function like this: z$y[z$x == w] or in sql speak, like this z$y[z$x IN w] To complicate matters, my x variable is a date variable (as is w). Essentially, I have a bunch of dates with associated values and I want to retrieve all the associated values for particular dates. Is there any R function that will do this in a one-line, non-messy way? Thanks very much for any help! Emily _________________________________________________________________ [[alternative HTML version deleted]]
z$y[z$x %in% w] b On Oct 26, 2007, at 4:19 PM, Em C wrote:> Hi all, > > I'm trying to find > something like the "==" operator that will work on vectors or > something > equivalent to SQL's "IN" function. For e.g., if I have: > > x <- c(1,2,3,4,5) > y <- c("apples", "oranges", "grapes", "bananas", "pears") > z <- data.frame (x,y) > w <- c(2,4,5) > > I want R to return the values "oranges", "bananas", "pears" through > some function like this: > > z$y[z$x == w] > > or in sql speak, like this > > z$y[z$x IN w] > > To complicate matters, my x variable is a date variable (as is w). > Essentially, I have a bunch of dates with associated values and I > want to retrieve all the associated values for particular dates. > > Is there any R function that will do this in a one-line, non-messy > way? Thanks very much for any help! > > Emily > > _________________________________________________________________ > > > [[alternative HTML version deleted]] > > ______________________________________________ > 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.
Gabor Grothendieck
2007-Oct-26 21:21 UTC
[R] function in R that's equivalent to SQL's "IN"
Here are a few ways: with(z, y[x %in% w]) subset(z, x %in% w)$y z[z$x %in% w, "y"] z$y[z$x %in% w] # see sqldf.googlecode.com for more info library(sqldf) sqldf("select y from z where x in (2, 3, 5)") # but if you know that x is 1:n and the components of w are in # that set, as is the case in the example, then the above reduce to # any of these z[w, "y"] z$y[w] with(z, y[w]) On 10/26/07, Em C <mmmraspberries at hotmail.com> wrote:> Hi all, > > I'm trying to find > something like the "==" operator that will work on vectors or something > equivalent to SQL's "IN" function. For e.g., if I have: > > x <- c(1,2,3,4,5) > y <- c("apples", "oranges", "grapes", "bananas", "pears") > z <- data.frame (x,y) > w <- c(2,4,5) > > I want R to return the values "oranges", "bananas", "pears" through some function like this: > > z$y[z$x == w] > > or in sql speak, like this > > z$y[z$x IN w] > > To complicate matters, my x variable is a date variable (as is w). Essentially, I have a bunch of dates with associated values and I want to retrieve all the associated values for particular dates. > > Is there any R function that will do this in a one-line, non-messy way? Thanks very much for any help! > > Emily > > _________________________________________________________________ > > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. >