Data Structure
 Networking
 RDBMS
 Operating System
 Java
 MS Excel
 iOS
 HTML
 CSS
 Android
 Python
 C Programming
 C++
 C#
 MongoDB
 MySQL
 Javascript
 PHP
- Selected Reading
 - UPSC IAS Exams Notes
 - Developer's Best Practices
 - Questions and Answers
 - Effective Resume Writing
 - HR Interview Questions
 - Computer Glossary
 - Who is Who
 
How to combine two vectors while replacing the NA values with the values in the other vector in R?
Sometimes we have vectors with NA values, also there might be a situation that one of vector having an NA at a position and the other vector has the numerical values at the same position. For example, 1, 2, NA and 1, 2, 3. In this case, we might want to combine these two vectors to make a single vector. This can be done by using coalesce function of dplyr package.
Example
> library(dplyr) > x1<-sample(c(1:4,NA),20,replace=TRUE) > x1
Output
[1] NA 4 NA 1 2 NA 4 1 4 1 2 3 1 4 2 2 NA 2 2 1
Example
> y1<-1:20 > y1
Output
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
> coalesce(x1,y1)
Output
[1] 1 4 3 1 2 6 4 1 4 1 2 3 1 4 2 2 17 2 2 1
Example
> x2<-sample(c(5,NA,10),50,replace=TRUE) > x2
Output
[1] 10 5 NA 5 5 NA 5 NA NA 5 NA 10 NA 10 5 NA NA NA 10 5 5 NA NA 5 NA [26] 5 10 5 10 10 10 10 NA NA 5 NA 5 NA 5 NA 10 10 NA 10 NA 5 NA 10 10 5
Example
> y2<-sample(c(5,8,10),50,replace=TRUE) > y2
Output
[1] 5 5 10 5 10 8 8 8 5 10 8 5 10 8 10 5 5 8 5 5 10 8 8 8 10 [26] 5 10 5 5 10 10 5 5 10 10 8 10 10 8 8 10 5 5 5 8 5 10 5 8 8
> coalesce(x2,y2)
Output
[1] 10 5 10 5 5 8 5 8 5 5 8 10 10 10 5 5 5 8 10 5 5 8 8 5 10 [26] 5 10 5 10 10 10 10 5 10 5 8 5 10 5 8 10 10 5 10 8 5 10 10 10 5
Example
> x3<-sample(c(2,4,16,NA,10),100,replace=TRUE) > x3
Output
[1] 2 2 16 16 NA NA 2 16 16 4 4 4 NA 10 2 4 NA 2 4 NA 16 2 10 10 16 [26] NA 2 16 2 10 NA 4 2 10 10 16 10 16 10 NA 4 4 4 4 10 NA NA 10 16 10 [51] 4 4 NA 16 16 2 NA 10 16 16 16 16 2 4 16 2 2 16 NA 2 NA 4 16 4 16 [76] 2 4 NA NA 2 2 10 16 10 4 10 4 10 NA 10 NA 4 10 4 16 2 4 2 16 2
Example
> y3<-sample(c(2,4,16,8,10),100,replace=TRUE) > y3
Output
[1] 10 2 8 8 10 8 10 8 4 2 10 4 16 10 8 2 8 8 2 2 4 4 2 10 10 [26] 8 16 8 16 4 4 2 16 2 16 8 4 16 4 8 8 10 10 4 4 4 4 2 4 10 [51] 2 8 2 4 2 10 8 8 4 4 2 10 2 16 8 8 10 8 2 2 10 16 10 10 2 [76] 4 10 2 4 10 4 8 16 4 2 4 2 16 4 8 10 4 8 10 16 4 4 4 10 2
> coalesce(x3,y3)
Output
[1] 2 2 16 16 10 8 2 16 16 4 4 4 16 10 2 4 8 2 4 2 16 2 10 10 16 [26] 8 2 16 2 10 4 4 2 10 10 16 10 16 10 8 4 4 4 4 10 4 4 10 16 10 [51] 4 4 2 16 16 2 8 10 16 16 16 16 2 4 16 2 2 16 2 2 10 4 16 4 16 [76] 2 4 2 4 2 2 10 16 10 4 10 4 10 4 10 10 4 10 4 16 2 4 2 16 2
Example
> x4<-sample(rnorm(10),50,replace=TRUE) > x4
Output
[1] -0.02879712 1.31733536 -0.02879712 -0.77268752 0.47775338 1.23117578 [7] 1.23117578 -0.77268752 1.31733536 0.30903710 0.47775338 1.31733536 [13] -0.77268752 0.30903710 1.31733536 -1.65681391 -1.65681391 1.31733536 [19] -0.02879712 0.47775338 0.30903710 -0.77268752 0.08699075 -0.02879712 [25] -1.65681391 -0.77268752 0.45328379 1.23117578 0.08699075 -1.65681391 [31] 1.23117578 0.47775338 1.25889501 0.45328379 1.31733536 -1.65681391 [37] 0.45328379 0.30903710 0.45328379 1.31733536 0.30903710 0.45328379 [43] 0.08699075 1.31733536 -1.65681391 1.31733536 -0.77268752 -1.65681391 [49] -0.77268752 1.25889501
Example
> y4<-sample(c(rnorm(10),NA),50,replace=TRUE) > y4
Output
[1] -0.6383008 -0.6383008 1.0152569 1.0152569 0.5242708 -0.6383008 [7] -0.3965653 NA 0.5242708 -0.4664776 NA NA [13] 1.1300389 -0.3965653 -0.3965653 1.0152569 -0.9956721 -0.4664776 [19] -0.4664776 -0.3610621 NA 0.4749585 -0.4664776 -0.3965653 [25] -0.3610621 -0.9956721 -0.6383008 NA 1.0152569 -0.4664776 [31] 0.4749585 NA -0.4664776 -0.9956721 NA -0.3610621 [37] -0.3965653 1.0152569 0.4749585 0.5242708 0.5242708 -0.3965653 [43] -0.4664776 -0.8300846 -0.9956721 NA 1.0152569 -0.9956721 [49] -0.4664776 -0.6383008
> coalesce(x4,y4)
Output
[1] -0.02879712 1.31733536 -0.02879712 -0.77268752 0.47775338 1.23117578 [7] 1.23117578 -0.77268752 1.31733536 0.30903710 0.47775338 1.31733536 [13] -0.77268752 0.30903710 1.31733536 -1.65681391 -1.65681391 1.31733536 [19] -0.02879712 0.47775338 0.30903710 -0.77268752 0.08699075 -0.02879712 [25] -1.65681391 -0.77268752 0.45328379 1.23117578 0.08699075 -1.65681391 [31] 1.23117578 0.47775338 1.25889501 0.45328379 1.31733536 -1.65681391 [37] 0.45328379 0.30903710 0.45328379 1.31733536 0.30903710 0.45328379 [43] 0.08699075 1.31733536 -1.65681391 1.31733536 -0.77268752 -1.65681391 [49] -0.77268752 1.25889501
Example
> x5<-sample(c(runif(10,2,5)),50,replace=TRUE) > x5
Output
[1] 4.791954 4.447842 4.479391 4.627612 4.447842 2.460460 2.460460 4.627612 [9] 4.130456 2.904874 2.904874 2.460460 4.804377 2.517587 4.447842 4.627612 [17] 4.804377 4.791954 4.479391 2.460460 4.479391 4.479391 4.130456 3.218738 [25] 4.447842 4.130456 2.460460 4.791954 4.479391 3.218738 4.479391 4.479391 [33] 4.791954 2.517587 4.447842 4.479391 3.218738 4.130456 3.218738 4.791954 [41] 2.904874 4.479391 4.791954 2.904874 4.479391 4.791954 4.479391 4.130456 [49] 4.804377 4.791954
Example
> y5<-sample(c(runif(10,3,5)),50,replace=TRUE) > y5
Output
[1] 4.805609 4.832933 3.553856 4.832933 4.942905 4.805609 4.942905 4.608437 [9] 4.832933 4.163457 4.832933 4.608437 3.013883 4.608437 4.942905 4.163457 [17] 4.743048 3.013883 3.013883 4.743048 3.553856 4.743048 3.933597 3.933597 [25] 4.743048 4.508212 4.805609 4.743048 3.013883 4.163457 4.942905 4.743048 [33] 4.942905 4.508212 3.553856 4.608437 3.553856 4.743048 3.933597 4.163457 [41] 3.933597 4.508212 4.608437 4.508212 3.933597 4.942905 4.508212 4.832933 [49] 4.832933 4.805609
> coalesce(x5,y5)
Output
[1] 4.791954 4.447842 4.479391 4.627612 4.447842 2.460460 2.460460 4.627612 [9] 4.130456 2.904874 2.904874 2.460460 4.804377 2.517587 4.447842 4.627612 [17] 4.804377 4.791954 4.479391 2.460460 4.479391 4.479391 4.130456 3.218738 [25] 4.447842 4.130456 2.460460 4.791954 4.479391 3.218738 4.479391 4.479391 [33] 4.791954 2.517587 4.447842 4.479391 3.218738 4.130456 3.218738 4.791954 [41] 2.904874 4.479391 4.791954 2.904874 4.479391 4.791954 4.479391 4.130456 [49] 4.804377 4.791954
Advertisements