# Invert a row selection in DataFramesMeta

**URL:** <https://discourse.julialang.org/t/invert-a-row-selection-in-dataframesmeta/97792>\
**Category:** Data\
**Tags:** dataframes\
**Created:** [April 22, 2023, 4:19pm UTC](https://discourse.julialang.org/t/invert-a-row-selection-in-dataframesmeta/97792 "2023-04-22T16:19:22Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ForestRaven](https://avatars.discourse-cdn.com/v4/letter/f/aca169/32.png) [@ForestRaven](https://discourse.julialang.org/u/ForestRaven)\
**Post date:** [April 22, 2023, 4:19pm UTC](https://discourse.julialang.org/t/invert-a-row-selection-in-dataframesmeta/97792/1 "2023-04-22T16:19:22Z")

</div>

Hi,

Is there a better way to write this operation:  
`@rsubset d !occursin("julia", :language)`

I would like to use @subset but do not know how to compose it with the negation.

Thanks !

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [April 22, 2023, 6:08pm UTC](https://discourse.julialang.org/t/invert-a-row-selection-in-dataframesmeta/97792/2 "2023-04-22T18:08:35Z")

</div>

But what problem do you have with this proposal that you have written? It seems OK for me. What would be the benefit of using `@subset`.

You could write it as:

```julia
@subset d .!occursin.("julia", :language)

```

(not tested)

---

<div class="post-metadata">

**Author:** ![ForestRaven](https://avatars.discourse-cdn.com/v4/letter/f/aca169/32.png) [@ForestRaven](https://discourse.julialang.org/u/ForestRaven)\
**Post date:** [April 24, 2023, 2:06pm UTC](https://discourse.julialang.org/t/invert-a-row-selection-in-dataframesmeta/97792/4 "2023-04-24T14:06:26Z")

</div>

Thanks, your solution works great !

3 reasons why I was looking for it:

1. I was sure it could be done but could not figure it out
2. It’s easier to keep using a mental modal with vectorized operations instead of switching back and forth to “by-row” analysis (at least for me).
3. Maybe performances are better ?

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [April 24, 2023, 2:22pm UTC](https://discourse.julialang.org/t/invert-a-row-selection-in-dataframesmeta/97792/5 "2023-04-24T14:22:50Z")

</div>

> [@ForestRaven](#):
>
> Maybe performances are better ?

Performance should be roughly the same.
