How to Replace Zero with NA in R (With Examples)

In R, you can use the is.na() and is.nan() functions to replace all instances of 0 with NA. This can be useful when dealing with missing data, as NA is used to denote that there is no data present. To do this, you can use the ifelse() function and assign 0 to NA. To illustrate this, we provide examples of how to replace 0 with NA in R.


You can use the following methods to replace zero with NA values in R:

Method 1: Replace Zero with NA in All Columns

df[df == 0] <- NA

Method 2: Replace Zero with NA in One Column

df$col1[df$col1 == 0] <- NA

Method 3: Replace Zero with NA in Several Specific Columns

df[, c('col1', 'col2')][df[, c('col1', 'col2')] == 0] <- NA

The following examples show how to use each method in practice with the following data frame:

#create data frame
df <- data.frame(player=c('A', 'B', 'C', 'D', 'E'),
                 pts=c(17, 12, NA, 9, 25),
                 rebs=c(3, 3, NA, NA, 8),
                 blocks=c(1, 1, 2, 4, NA))

#view data frame
df

  player pts rebs blocks
1      A  17    3      1
2      B  12    3      1
3      C  NA   NA      2
4      D   9   NA      4
5      E  25    8     NA

Example 1: Replace Zero with NA in All Columns

The following code shows how to replace zeros with NA values in all columns of a data frame:

#replace zero with NA in all columns
df[df == 0] <- NA

#view updated data frame
df

  player pts rebs blocks
1      A  17    3      1
2      B  12    3      1
3      C  NA   NA      2
4      D   9   NA      4
5      E  25    8     NA

Notice that the zeros have been replaced with NA values in every column of the data frame.

Example 2: Replace Zero with NA in One Column

The following code shows how to replace zero with NA values in one column of a data frame:

#replace zero with NA in 'rebs' column only
df$rebs[df$rebs == 0] <- NA

#view data frame
  player pts rebs blocks
1      A  17    3      1
2      B  12    3      1
3      C   0   NA      2
4      D   9   NA      4
5      E  25    8      0

Notice that each zero has been replaced with NA in the ‘rebs’ column while all other columns have remained unchanged.

Example 3: Replace Zero with NA in Several Specific Columns

The following code shows how to replace zero with NA values in several specific columns of a data frame:

#replace zero with NA values in 'pts' and 'rebs' columns only
df[, c('pts', 'rebs')][df[, c('pts', 'rebs')] == 0] <- NA

#view data frame
df

  player pts rebs blocks
1      A  17    3      1
2      B  12    3      1
3      C  NA   NA      2
4      D   9   NA      4
5      E  25    8      0

Notice that each zero has been replaced with NA in the ‘pts’ and ‘rebs’ columns while the ‘blocks’ column has remained unchanged.

The following tutorials explain how to perform other common tasks in R:

x