How to convert NA’s in sequence to a single NA in an R vector?

R ProgrammingServer Side ProgrammingProgramming

<p>Sometimes values are missing in a sequence and R program records them as NA (Not Available). In this type of situation, we might want to replace consecutive NA records with single NA value. This can be done by using is.na along with diff function as shown in the below examples.</p><h2>Example</h2><p><a class="demo" href="http://tpcg.io/DxozHyEK" rel="nofollow" target="_blank">&nbsp;Live Demo</a></p><pre class="prettyprint notranslate">x1&lt;-sample(c(NA,1),20,replace=TRUE) x1</pre><h2>Output</h2><pre class="result notranslate">[1] 1 1 NA 1 NA 1 NA NA 1 1 NA NA NA NA 1 NA 1 1 1 NA</pre><h2>Example</h2><pre class="prettyprint notranslate">x1[!(is.na(x1)&amp;diff(c(FALSE,is.na(x1)))==0)]</pre><h2>Output</h2><pre class="result notranslate">[1] 1 1 NA 1 NA 1 NA 1 1 NA 1 NA 1 1 1 NA </pre><h2>Example</h2><p><a class="demo" href="http://tpcg.io/XsI67Qxx" rel="nofollow" target="_blank">&nbsp;Live Demo</a></p><pre class="prettyprint notranslate">x2&lt;-sample(c(NA,2,3),200,replace=TRUE) x2</pre><h2>Output</h2><pre class="result notranslate">[1] NA NA 2 NA 2 2 NA 3 NA NA NA 3 NA 2 NA 2 3 3 NA NA NA 3 NA NA 2 [26] 2 NA NA 3 2 3 NA 2 NA 3 2 3 2 2 3 3 NA 3 2 3 NA 3 2 2 NA [51] NA NA NA 2 NA NA 3 2 NA 3 2 3 NA 3 3 2 NA 2 3 NA 3 2 3 2 3 [76] NA NA 2 NA 3 NA NA 3 3 2 2 2 3 NA NA 3 2 3 NA 2 2 NA NA 2 3 [101] NA NA 3 3 3 NA NA 3 2 2 2 NA NA 2 NA 3 3 NA 3 NA 2 NA NA 3 NA [126] NA 2 3 2 3 2 NA 2 3 3 2 NA NA NA 3 2 2 2 3 NA NA 2 3 2 NA [151] 2 NA 2 3 2 NA NA NA NA NA 3 NA 3 3 NA 3 2 2 2 2 NA 3 2 NA 2 [176] 3 3 2 3 3 NA 3 NA 2 3 3 2 2 3 2 2 2 NA NA 2 3 NA 3 NA 3</pre><h2>Example</h2><pre class="prettyprint notranslate">x2[!(is.na(x2)&amp;diff(c(FALSE,is.na(x2)))==0)]</pre><h2>Output</h2><pre class="result notranslate">[1] NA 2 NA 2 2 NA 3 NA 3 NA 2 NA 2 3 3 NA 3 NA 2 2 NA 3 2 3 NA [26] 2 NA 3 2 3 2 2 3 3 NA 3 2 3 NA 3 2 2 NA 2 NA 3 2 NA 3 2 [51] 3 NA 3 3 2 NA 2 3 NA 3 2 3 2 3 NA 2 NA 3 NA 3 3 2 2 2 3 [76] NA 3 2 3 NA 2 2 NA 2 3 NA 3 3 3 NA 3 2 2 2 NA 2 NA 3 3 NA [101] 3 NA 2 NA 3 NA 2 3 2 3 2 NA 2 3 3 2 NA 3 2 2 2 3 NA 2 3 [126] 2 NA 2 NA 2 3 2 NA 3 NA 3 3 NA 3 2 2 2 2 NA 3 2 NA 2 3 3 [151] 2 3 3 NA 3 NA 2 3 3 2 2 3 2 2 2 NA 2 3 NA 3 NA 3</pre><h2>Example</h2><p><a class="demo" href="http://tpcg.io/UJWghZt2" rel="nofollow" target="_blank">&nbsp;Live Demo</a></p><pre class="prettyprint notranslate">x3&lt;-sample(c(5,NA),200,replace=TRUE) x3</pre><h2>Output</h2><pre class="result notranslate">[1] NA NA NA NA NA NA 5 5 5 5 5 NA NA 5 NA NA NA NA 5 5 5 NA NA NA 5 [26] NA 5 NA 5 5 5 NA NA NA NA 5 NA NA NA NA 5 5 5 5 NA 5 5 5 NA 5 [51] NA NA 5 NA NA NA NA 5 5 5 5 5 5 NA NA 5 5 NA 5 5 NA NA NA 5 5 [76] 5 NA 5 NA 5 5 5 5 5 5 NA 5 5 NA 5 5 5 NA 5 5 5 NA NA NA 5 [101] 5 5 5 5 5 NA NA 5 NA NA NA 5 NA NA 5 5 5 5 5 NA NA NA 5 5 5 [126] NA 5 NA NA NA 5 5 NA NA 5 NA NA NA 5 NA NA 5 NA 5 NA NA 5 NA NA 5 [151] 5 NA 5 5 5 NA 5 5 5 NA 5 5 5 5 NA NA NA NA NA NA NA 5 NA NA 5 [176] 5 NA 5 5 5 NA 5 5 5 NA 5 NA NA 5 5 5 5 NA NA 5 NA NA NA 5 5</pre><h2>Example</h2><pre class="prettyprint notranslate">x3[!(is.na(x3)&amp;diff(c(FALSE,is.na(x3)))==0)]</pre><h2>Output</h2><pre class="result notranslate">[1] NA 5 5 5 5 5 NA 5 NA 5 5 5 NA 5 NA 5 NA 5 5 5 NA 5 NA 5 5 [26] 5 5 NA 5 5 5 NA 5 NA 5 NA 5 5 5 5 5 5 NA 5 5 NA 5 5 NA 5 [51] 5 5 NA 5 NA 5 5 5 5 5 5 NA 5 5 NA 5 5 5 NA 5 5 5 NA 5 5 [76] 5 5 5 5 NA 5 NA 5 NA 5 5 5 5 5 NA 5 5 5 NA 5 NA 5 5 NA 5 [101] NA 5 NA 5 NA 5 NA 5 NA 5 5 NA 5 5 5 NA 5 5 5 NA 5 5 5 5 NA [126] 5 NA 5 5 NA 5 5 5 NA 5 5 5 NA 5 NA 5 5 5 5 NA 5 NA 5 5</pre><h2>Example</h2><p><a class="demo" href="http://tpcg.io/j253lv9D" rel="nofollow" target="_blank">&nbsp;Live Demo</a></p><pre class="prettyprint notranslate">x4&lt;-sample(c(499,NA,501),200,replace=TRUE) x4</pre><h2>Output</h2><pre class="result notranslate">[1] NA 501 501 501 501 NA 499 NA 499 NA 501 499 499 NA NA NA 499 501 [19] 501 NA NA 499 499 501 501 499 499 501 NA NA NA 501 501 501 499 NA [37] 501 501 499 499 499 NA NA 499 499 499 499 NA 501 501 501 NA 501 501 [55] 499 501 499 499 501 NA NA 501 501 NA 499 501 499 NA 499 501 499 NA [73] NA 501 501 501 501 501 NA 501 499 501 499 501 499 501 NA 499 NA NA [91] 501 NA NA 501 499 501 NA NA NA NA NA NA 499 501 501 501 NA 501 [109] NA 499 NA 501 499 NA 499 499 501 499 499 499 501 NA 501 NA NA 501 [127] NA 499 501 NA 501 501 NA NA 501 NA 499 499 499 NA NA 501 501 501 [145] 501 NA 499 NA NA 501 501 NA 501 NA NA 499 499 501 NA 501 NA NA [163] 501 NA 499 NA 499 499 501 501 501 NA 501 501 NA NA 501 501 501 499 [181] 499 501 499 501 501 NA 501 NA 499 NA NA 499 501 NA 499 501 NA 501 [199] NA 501</pre><h2>Example</h2><pre class="prettyprint notranslate">x4[!(is.na(x4)&amp;diff(c(FALSE,is.na(x4)))==0)]</pre><h2>Output</h2><pre class="result notranslate">[1] NA 501 501 501 501 NA 499 NA 499 NA 501 499 499 NA 499 501 501 NA [19] 499 499 501 501 499 499 501 NA 501 501 501 499 NA 501 501 499 499 499 [37] NA 499 499 499 499 NA 501 501 501 NA 501 501 499 501 499 499 501 NA [55] 501 501 NA 499 501 499 NA 499 501 499 NA 501 501 501 501 501 NA 501 [73] 499 501 499 501 499 501 NA 499 NA 501 NA 501 499 501 NA 499 501 501 [91] 501 NA 501 NA 499 NA 501 499 NA 499 499 501 499 499 499 501 NA 501 [109] NA 501 NA 499 501 NA 501 501 NA 501 NA 499 499 499 NA 501 501 501 [127] 501 NA 499 NA 501 501 NA 501 NA 499 499 501 NA 501 NA 501 NA 499 [145] NA 499 499 501 501 501 NA 501 501 NA 501 501 501 499 499 501 499 501 [163] 501 NA 501 NA 499 NA 499 501 NA 499 501 NA 501 NA 501</pre><h2>Example</h2><p><a class="demo" href="http://tpcg.io/lraHwPlp" rel="nofollow" target="_blank">&nbsp;Live Demo</a></p><pre class="prettyprint notranslate">x5&lt;-sample(c(1025,NA),100,replace=TRUE) x5</pre><h2>Output</h2><pre class="result notranslate">[1] NA 1025 NA NA 1025 1025 1025 NA NA NA 1025 1025 1025 NA NA [16] NA 1025 NA 1025 1025 1025 NA 1025 NA NA 1025 1025 1025 NA 1025 [31] 1025 1025 NA 1025 NA NA 1025 1025 1025 NA NA NA 1025 NA NA [46] 1025 NA NA NA NA 1025 NA 1025 1025 1025 1025 NA 1025 NA 1025 [61] 1025 1025 NA NA 1025 1025 NA 1025 NA NA 1025 NA NA NA NA [76] NA NA 1025 1025 1025 1025 1025 1025 1025 NA NA NA 1025 1025 NA [91] NA NA 1025 NA NA 1025 NA 1025 1025 1025</pre><h2>Example</h2><pre class="prettyprint notranslate">x5[!(is.na(x5)&amp;diff(c(FALSE,is.na(x5)))==0)]</pre><h2>Output</h2><pre class="result notranslate">[1] NA 1025 NA 1025 1025 1025 NA 1025 1025 1025 NA 1025 NA 1025 1025 [16] 1025 NA 1025 NA 1025 1025 1025 NA 1025 1025 1025 NA 1025 NA 1025 [31] 1025 1025 NA 1025 NA 1025 NA 1025 NA 1025 1025 1025 1025 NA 1025 [46] NA 1025 1025 1025 NA 1025 1025 NA 1025 NA 1025 NA 1025 1025 1025 [61] 1025 1025 1025 1025 NA 1025 1025 NA 1025 NA 1025 NA 1025 1025 1025</pre>
raja
Updated on 07-Dec-2020 06:19:31

Advertisements