una - Reemplazar valores de caracteres con NA en un marco de datos
reemplazar na r (5)
Tengo un marco de datos que contiene (en lugares aleatorios) un valor de carácter (digamos "foo"
) que quiero reemplazar con un NA
.
¿Cuál es la mejor manera de hacerlo en todo el marco de datos?
Esta:
df[ df == "foo" ] <- NA
Esto podría hacerse con dplyr
de mutate_all
y replace
:
library(dplyr)
df <- data_frame(a = c(''foo'', 2, 3), b = c(1, ''foo'', 3), c = c(1,2,''foobar''), d = c(1, 2, 3))
> df
# A tibble: 3 x 4
a b c d
<chr> <chr> <chr> <dbl>
1 foo 1 1 1
2 2 foo 2 2
3 3 3 foobar 3
df <- mutate_all(df, funs(replace(., .==''foo'', NA)))
> df
# A tibble: 3 x 4
a b c d
<chr> <chr> <chr> <dbl>
1 <NA> 1 1 1
2 2 <NA> 2 2
3 3 3 foobar 3
Otra opción es is.na<-
:
is.na(df) <- df == "foo"
Tenga en cuenta que su uso puede parecer un poco contra-intuitivo, pero en realidad asigna valores NA
a df
en el índice en el lado derecho.
Una forma alternativa de resolver es a continuación:
for (i in 1:ncol(DF)){
DF[which(DF[,i]==""),columnIndex]<-"ALL"
FinalData[which(is.na(FinalData[,columnIndex])),columnIndex]<-"ALL"
}
Una manera de cortar esto de raíz es convertir ese personaje a NA cuando leas los datos en primer lugar.
df <- read.csv("file.csv", na.strings = c("foo", "bar"))