# What is Julia's equivalent of R's %in%

**URL:** https://discourse.julialang.org/t/what-is-julias-equivalent-of-rs-in/28720
**Category:** New to Julia
**Created:** [September 13, 2019, 2:21pm UTC](https://discourse.julialang.org/t/what-is-julias-equivalent-of-rs-in/28720 "2019-09-13T14:21:15Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![Luigi\_Marongiu](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/luigi_marongiu/32/7909_2.png) [@Luigi\_Marongiu](https://discourse.julialang.org/u/Luigi_Marongiu)
#### Post date: [September 13, 2019, 2:21pm UTC](https://discourse.julialang.org/t/what-is-julias-equivalent-of-rs-in/28720/1 "2019-09-13T14:21:15Z")

</div>

hello,  
I have two different dataframes with different columns and headers, but the columns `Start` and `Start_site` are related and in particular I want to select the rows of the first dataframe with `Start` matching the second dataframe with `Start_site`.  
Essentially I am looking for the julia equivalent of R’s `Start` %in% `Start_site`.  
I tried with join, but it requires the same dataframe structure…  
Thanks

---

<div class="post-metadata">

### Author: ![Luigi\_Marongiu](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/luigi_marongiu/32/7909_2.png) [@Luigi\_Marongiu](https://discourse.julialang.org/u/Luigi_Marongiu)
#### Post date: [September 13, 2019, 2:25pm UTC](https://discourse.julialang.org/t/what-is-julias-equivalent-of-rs-in/28720/2 "2019-09-13T14:25:22Z")

</div>

Nevermind, I found it:

```julia
join(df1, df2; on = :Start, kind = :semi, makeunique = false,
                   indicator = nothing, validate = (false, false))

```

I had to call the columns with the same name

---

<div class="post-metadata">

### Author: ![ElOceanografo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eloceanografo/32/624_2.png) [@ElOceanografo](https://discourse.julialang.org/u/ElOceanografo)
#### Post date: [September 13, 2019, 4:12pm UTC](https://discourse.julialang.org/t/what-is-julias-equivalent-of-rs-in/28720/3 "2019-09-13T16:12:03Z")

</div>

There is also the `in` function:

```julia
start = [1, 3, 4, 6]
start_site = 1:5 
in_start_site = in(start_site) # in(...) returns a function
in_start_site.(start) # [true, true, true, false]

```

`in(collection)` returns a function that tests if something is in `collection`. You can also write this in one line:

```julia
in(start).(start_site)

```

---

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [September 14, 2019, 6:02pm UTC](https://discourse.julialang.org/t/what-is-julias-equivalent-of-rs-in/28720/4 "2019-09-14T18:02:09Z")

</div>

cf

> [@Julia's in.() seems slow compared to R's %in%](https://discourse.julialang.org/t/julias-in-seems-slow-compared-to-rs-in/23900):
>
> Hi everyone, I want to compare if elements of vector x are in elements of vector y. In R, I can do this as follows: \> x \<- c("a", "b", "c") \> y \<- c("b", "a") \> x %in% y [1] TRUE TRUE FALSE In Julia, I can do this as follows: julia\> x = ["a", "b", "c"]; julia\> y = ["b", "c"]; julia\> in.(x, Ref(y)) 3-element BitArray{1}: false true true Now let’s make the vector big: In R, \> set.seed(123) \> x \<- rnorm(100000, 1000, 2) \> y \<- rnorm(100000, 1000, 2) \> system.time(x %in% y) user sy…

TL;DR: you are probably looking for

```julia
x .∈ Ref(Set(y))

```

---

<div class="post-metadata">

### Author: ![Luigi\_Marongiu](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/luigi_marongiu/32/7909_2.png) [@Luigi\_Marongiu](https://discourse.julialang.org/u/Luigi_Marongiu)
#### Post date: [October 8, 2019, 2:08pm UTC](https://discourse.julialang.org/t/what-is-julias-equivalent-of-rs-in/28720/5 "2019-10-08T14:08:58Z")

</div>

Hello, I got a slight variation of this problem. Instead of testing arrays, I would like to select the rows of a dataframe whose column X corresponds to the all the elements of an array. In other words:  
if I have an array `x=["a", "b", "c"]` and a dataframe df with `unique(df[:X]) = "a", "c", "d", "g"`, can I make a selection? `df[df[:X] .== x, :]`, `df[df[:X] .∈ x, :]` and `df[occursin.(x, df.X), :]` did not work…

---

<div class="post-metadata">

### Author: ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)
#### Post date: [October 8, 2019, 3:25pm UTC](https://discourse.julialang.org/t/what-is-julias-equivalent-of-rs-in/28720/6 "2019-10-08T15:25:49Z")

</div>

`df[in(x).(df.X), :]`

---

<div class="post-metadata">

### Author: ![Luigi\_Marongiu](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/luigi_marongiu/32/7909_2.png) [@Luigi\_Marongiu](https://discourse.julialang.org/u/Luigi_Marongiu)
#### Post date: [November 21, 2019, 1:26pm UTC](https://discourse.julialang.org/t/what-is-julias-equivalent-of-rs-in/28720/7 "2019-11-21T13:26:59Z")

</div>

what would be the negation of this? that is how to select the rows of the dataframe whose field X IS NOT in x?

---

<div class="post-metadata">

### Author: ![MrUrq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mrurq/32/8924_2.png) [@MrUrq](https://discourse.julialang.org/u/MrUrq)
#### Post date: [November 21, 2019, 1:42pm UTC](https://discourse.julialang.org/t/what-is-julias-equivalent-of-rs-in/28720/8 "2019-11-21T13:42:28Z")

</div>

```julia
julia> x=["a","b","c"]
julia> df = DataFrame(X = ["a","c","d","g"])

julia> df[.!in(x).(df.X),:]

2×1 DataFrame
│ Row │ X │
│ │ String │
├─────┼────────┤
│ 1 │ d │
│ 2 │ g │

```

---

<div class="post-metadata">

### Author: ![Mattriks](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mattriks/32/351_2.png) [@Mattriks](https://discourse.julialang.org/u/Mattriks)
#### Post date: [November 21, 2019, 1:50pm UTC](https://discourse.julialang.org/t/what-is-julias-equivalent-of-rs-in/28720/9 "2019-11-21T13:50:34Z")

</div>

or:

```julia
join(df1, df2, on=:X, kind=:anti)

?join

```

---

<div class="post-metadata">

### Author: ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)
#### Post date: [November 21, 2019, 2:16pm UTC](https://discourse.julialang.org/t/what-is-julias-equivalent-of-rs-in/28720/10 "2019-11-21T14:16:10Z")

</div>

```julia
filter(df) do row
    row.X in x
end

```
