Tenemos un marco de datos de un archivo CSV. El marco de datos DF
tiene columnas que contienen valores observados y una columna ( VaR2
) que contiene la fecha en la que se tomó una medición. Si no se registró la fecha, el archivo CSV contiene el valor NA
de los datos faltantes.
Var1 Var2
10 2010/01/01
20 NA
30 2010/03/01
Nos gustaría usar el comando subconjunto para definir un nuevo marco de datos de new_DF
manera que solo contenga filas que tengan un NA'
valor de la columna ( VaR2
). En el ejemplo dado, solo la Fila 2 estará contenida en el nuevoDF
.
El comando
new_DF<-subset(DF,DF$Var2=="NA")
no funciona, el marco de datos resultante no tiene entradas de fila.
Si en el archivo CSV original NA
se intercambia el Valor NULL
, el mismo comando produce el resultado deseado:new_DF<-subset(DF,DF$Var2=="NULL")
.
¿Cómo puedo hacer que este método funcione, si para la cadena de caracteres el valor NA
se proporciona en el archivo CSV original?
new_DF <- DF[is.na(DF$Var),]
, es decir, parece haber un(
paréntesis adicional despuésDF[
?NA es un valor especial en R, no mezcle el valor NA con la cadena "NA". Dependiendo de la forma en que se importaron los datos, sus celdas "NA" y "NULL" pueden ser de varios tipos (el comportamiento predeterminado es convertir cadenas "NA" en valores NA y dejar cadenas "NULL" como están).
Si usa read.table () o read.csv (), debe considerar el argumento "na.strings" para realizar una importación de datos limpia y trabajar siempre con valores reales de R NA.
Un ejemplo, trabajando en ambos casos celdas "NULL" y "NA":
fuente
complete.cases
daTRUE
cuando todos los valores en una fila no sonNA
fuente
Esto debería crear un nuevo marco de datos (
new_data
) con solo los valores faltantes en él.Funciona mejor para realizar un seguimiento de los valores que luego podría eliminar porque tenían algunas columnas con observaciones faltantes (NA).
fuente
Intente cambiar esto:
fuente
DF %>% filter(is.na(Var2))
despuéslibrary(dplyr)
.Imprime todas las filas con datos NA:
fuente