How to set NA values to TRUE for a Boolean column in an R data frame?



Dealing with NA values is one of the boring and almost day to day task for an analyst and hence we need to replace it with the appropriate value. If in an R data frame, we have a Boolean column that represents TRUE and FALSE values, and we have only FALSE values then we might want to replace NA’s with TRUE. In this case, we can use single square bracket and is.na to set all NA’s to TRUE.

Example

set.seed(999)
S.No.<-1:20 Won<-sample(c(FALSE,NA),20,replace=TRUE) df1<-data.frame(S.No.,Won)
df1

Output

S.No. Won
1 1 FALSE
2 2 NA
3 3 FALSE
4 4 FALSE
5 5 FALSE
6 6 NA
7 7 FALSE
8 8 NA
9 9 NA
10 10 NA
11 11 FALSE
12 12 FALSE
13 13 NA
14 14 FALSE
15 15 FALSE
16 16 FALSE
17 17 NA
18 18 NA
19 19 FALSE
20 20 FALSE

Setting NA’s in the Won column to TRUE −

df1["Won"][is.na(df1["Won"])]<-TRUE df1

Output

  S.No. Won
1  1   FALSE
2  2   TRUE
3  3   FALSE
4  4   FALSE
5  5   FALSE
6  6   TRUE
7  7   FALSE
8  8   TRUE
9  9   TRUE
10 10  TRUE
11 11  FALSE
12 12  FALSE
13 13  TRUE
14 14  FALSE
15 15  FALSE
16 16  FALSE
17 17  TRUE
18 18  TRUE
19 19  FALSE
20 20  FALSE

Let’s have a look at another example −

Example

 Live Demo

Group<-sample(1:4,20,replace=TRUE) Hot<-sample(c(FALSE,NA),20,replace=TRUE) df2<-data.frame(Group,Hot)
df2

Output

   Group Hot
1  3    FALSE
2  1   NA
3  3   NA
4  2   FALSE
5  2   FALSE
6  4   NA
7  3   NA
8  2   NA
9  3   FALSE
10 3   NA
11 3   NA
12 4   FALSE
13 4   NA
14 3   FALSE
15 4   FALSE
16 1   NA
17 4    NA
18 1  FALSE
19 2  NA
20 3   NA

Setting NA’s in the Hot column to TRUE −

df2["Hot"][is.na(df2["Hot"])]<-TRUE df2

Output

  Group Hot
1   2 TRUE
2  1  FALSE
3  1  FALSE
4  3  TRUE
5  2  FALSE
6  4  FALSE
7  1  FALSE
8  3  TRUE
9  1  TRUE
10  3 TRUE
11  1  TRUE
12 1  TRUE
13  2  TRUE
14  2  TRUE
15  4  FALSE
16  4  FALSE
17  1  TRUE
18  3  FALSE
19  3  FALSE
20  3 TRUE

Advertisements