Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replace NA with Zero in dplyr without using list()

Tags:

r

na

dplyr

In dplyr I can replace NA with 0 using the following code. The issue is this inserts a list into my data frame which screws up further analysis down the line. I don't even understand lists or atomic vectors or any of that at this point. I just want to pick certain columns, and replace all occurrences of NA with zero. And maintain the columns integer status.

library(dplyr) df <- tibble(x = c(1, 2, NA), y = c("a", NA, "b"), z = list(1:5, NULL, 10:20)) df df %>% replace_na(list(x = 0, y = "unknown")) 

That works but transforms the column into a list. How do I do it without transforming the column into a list?

And here's how to do it in base R. But not sure how to work this into a mutate statement:

df$x[is.na(df$x)] <- 0 
like image 842
stackinator Avatar asked Apr 20 '18 18:04

stackinator


People also ask

How do I put 0 instead of NA in R?

To replace NA with 0 in an R data frame, use is.na() function and then select all those values with NA and assign them to 0.

How do I change d to 0 in dplyr?

The COALESCE() function is part of the dplyr package and returns the first non-missing value of its arguments. Therefore, you can combine the MUTATE_ALL() function with the COALESCE() function, whose second argument is a zero, to replace all NA's with zeros.

How do I replace missing values in R?

To replace missing values in R with the minimum, you can use the tidyverse package. Firstly, you use the mutate() function to specify the column in which you want to replace the missing values. Secondly, you call the replace() function to identify the NA's and to substitute them with the column lowest value.


2 Answers

To replace all NAs in a dataframe use

df %>% replace(is.na(.), 0)

like image 104
Oliver Oliver Avatar answered Sep 20 '22 17:09

Oliver Oliver


dt  <- mutate(dt, x = ifelse(is.na(x), 0, x)) 
like image 27
NT_ Avatar answered Sep 16 '22 17:09

NT_