TransWikia.com

Como retirar NA de um dataframe no R?

Stack Overflow em Português Asked by Alexandre Sanches on December 2, 2021

Tenho um DF que possui alguns NA, como vou utilizá-lo para montar uma tabela, necessitava de trocar os NA por " ", para só aparecer o espaço vazio na tabela. Estou utilizando um mutate_if para deixar os números com apenas duas casas decimais e trocar de . para ,.

Tentei utilizar o seguinte código, com mutate e replace_na, mas não deu certo, os NA continuam aparecendo.

library(tidyverse)

df %>% 
    mutate_if(is.numeric, format, scientific = FALSE, big.mark = ".", decimal.mark = ",", digits = 2) %>%
    mutate_all(~ replace_na(., NA))

Meu dput:

df <- structure(list(a = c("Brasil", "Alimentação no domicílio", 
                           "Arroz", "Feijão-carioca (rajado)", "Farinha de trigo"),
                     b = c(NA, 0.02, 2.71, 9.82, 3.35), c = c(NA, 0.38, 3.69, 10.96, 3.62), 
                     d = c(NA, 0.87, 4.13, 7.28, 3.14), e = c(NA, 1.11, 4.02, 10.09, 3.24), 
                     f = c(NA, 1.13, 4.27, 9.23, 3.43), g = c(NA, NA, 0.15367429760666, 0.0882935186561618, 0.0116253902185224)), 
                row.names = c(NA, 5L), class = "data.frame")

2 Answers

Você pode usar os [ ], que são uma ferramenta de indexação poderosíssima e subestimada, assim:

df[is.na(df)] <- ''

Answered by yoyo on December 2, 2021

A seguinte solução consegue fazer o que a pergunta pede.

library(tidyverse)

fun <- function(x) {sub("(^.*\d,\d\d)(.*$)", "\1", sub("\.", ",", x))}

df %>%
    mutate(across(everything(), ~replace_na(.x, " "))) %>%
    mutate_at(vars(b:g), fun)
#                         a    b     c    d     e    f    g
#1                   Brasil                                
#2 Alimentação no domicílio 0,02  0,38 0,87  1,11 1,13     
#3                    Arroz 2,71  3,69 4,13  4,02 4,27 0,15
#4  Feijão-carioca (rajado) 9,82 10,96 7,28 10,09 9,23 0,08
#5         Farinha de trigo 3,35  3,62 3,14  3,24 3,43 0,01

Answered by Rui Barradas on December 2, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP