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.
>