# How remove missing value from vector

**URL:** https://discourse.julialang.org/t/how-remove-missing-value-from-vector/58916
**Category:** General Usage
**Created:** [April 9, 2021, 11:43am UTC](https://discourse.julialang.org/t/how-remove-missing-value-from-vector/58916 "2021-04-09T11:43:28Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![Rafael\_Brus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael_brus/32/23767_2.png) [@Rafael\_Brus](https://discourse.julialang.org/u/Rafael_Brus)
#### Post date: [April 9, 2021, 11:43am UTC](https://discourse.julialang.org/t/how-remove-missing-value-from-vector/58916/1 "2021-04-09T11:43:28Z")

</div>

How do I remove these missing values:

```julia
a = ["NY", "NY", "NY", missing, missing]

```

---

<div class="post-metadata">

### Author: ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)
#### Post date: [April 9, 2021, 11:53am UTC](https://discourse.julialang.org/t/how-remove-missing-value-from-vector/58916/2 "2021-04-09T11:53:08Z")

</div>

You can wrap it in an iterator that skips missing values:

```julia
skipmissing(a)

```

If you need to actually materialize that vector you can collect it:

```julia
collect(skipmissing(a))

```

You could also use `filter`:

```julia
filter(!ismissing, a) # this copies the data into a new vector
# or
filter!(!ismissing, a) # this modifies the vector a in-place.

```

---

<div class="post-metadata">

### Author: ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)
#### Post date: [April 9, 2021, 12:13pm UTC](https://discourse.julialang.org/t/how-remove-missing-value-from-vector/58916/3 "2021-04-09T12:13:27Z")

</div>

What are the disadvantages of the Matlab-style (?) solution: `a[.~ismissing.(a)]` ?  
Thanks.

---

<div class="post-metadata">

### Author: ![hendri54](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hendri54/32/9621_2.png) [@hendri54](https://discourse.julialang.org/u/hendri54)
#### Post date: [April 9, 2021, 12:21pm UTC](https://discourse.julialang.org/t/how-remove-missing-value-from-vector/58916/4 "2021-04-09T12:21:45Z")

</div>

It allocates, while `skipmissing` does not.  
Also seems harder to read.

---

<div class="post-metadata">

### Author: ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)
#### Post date: [April 9, 2021, 1:39pm UTC](https://discourse.julialang.org/t/how-remove-missing-value-from-vector/58916/5 "2021-04-09T13:39:44Z")

</div>

> [@rafael.guerra](#):
>
> `a[.~ismissing.(a)]`

It actually allocates two arrays, first a BitVector for indexing, and then the output vector.

Also, `~` is bitwise not, and while that works well on a `BitVector`, it seems risky and implementation-dependent. `a[.!ismissing.(a)]` seems more semantically correct.

Edit: My spellchecker always replaces `ismissing` with `dismissing`. Happens all the time, suddenly.

---

<div class="post-metadata">

### Author: ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)
#### Post date: [April 9, 2021, 2:24pm UTC](https://discourse.julialang.org/t/how-remove-missing-value-from-vector/58916/6 "2021-04-09T14:24:04Z")

</div>

@DNF and @hendri54, thank you. It is hard to get rid of bad habits and your explanations definitely help.
