valores unicos studio filas faltantes eliminar datos contar con r missing-data data-processing

unicos - eliminar filas con na en r



Manejo de datos faltantes/incompletos en R: ¿existe una función para enmascarar pero no eliminar NA? (3)

Es una buena práctica observar los datos, por lo tanto, infiere información sobre el tipo de valores faltantes: ¿es MCAR (falta completa y aleatoria), MAR (falta al azar) o MNAR (no falta al azar)? En función de estos tres tipos, puede estudiar la estructura subyacente de los valores faltantes y concluir si la imputación es aplicable (tiene suerte si no es MNAR), ya que, en ese caso, los valores faltantes no se pueden ignorar y son relacionado con alguna influencia subyacente desconocida, factor, proceso, variable ... lo que sea).

El Capítulo 3 en "Gráficos interactivos y dinámicos para analistas de datos con R y GGobi" por Di Cook y Deborah Swayne es una excelente referencia sobre este tema.

Verá el paquete norm en acción en este capítulo, pero el paquete Hmisc tiene rutinas de imputación de datos. Ver también Amelia , cat (para imputación de faltas categóricas), mi , mitools , VIM , vmv (para visualización de datos faltantes).

Honestamente, todavía no entiendo muy bien cuál es su pregunta sobre estadísticas o sobre las capacidades de imputación de datos que faltan en R. Reconozco que he proporcionado buenas referencias en la segunda, y sobre la primera: puede reemplazar sus NA con una tendencia central (media, mediana o similar), por lo tanto, reducir la variabilidad o con una constante aleatoria "extraída" de casos observados (registrados), o puede aplicar un análisis de regresión con una variable que contiene NA como criterio y otras variables como predictores, luego asignar residuos a NA ... es una manera elegante de tratar con NA, pero a menudo no lo haría vaya fácil con su CPU (tengo Celeron en 1.1GHz, así que tengo que ser suave).

Este es un problema de optimización ... no hay una respuesta definitiva, debe decidir qué / por qué está siguiendo algún método. ¡Pero siempre es una buena práctica mirar los datos! =) Asegúrese de consultar Cook & Swayne, es una guía excelente, hábilmente escrita. "Modelos lineales con R" de Faraway también contiene un capítulo sobre valores perdidos.

Por lo tanto, allí.

¡Buena suerte! =)

Como cabría esperar de un DSL destinado al análisis de datos, R maneja muy bien los datos faltantes / incompletos, por ejemplo:

Muchas funciones de R tienen un indicador na.rm que, cuando se establece en VERDADERO , elimina los NA:

>>> v = mean( c(5, NA, 6, 12, NA, 87, 9, NA, 43, 67), na.rm=T) >>> v (5, 6, 12, 87, 9, 43, 67)

Pero si desea tratar con NA antes de la llamada de función, debe hacer algo como esto:

para eliminar cada ''NA'' de un vector:

vx = vx[!is.na(a)]

para eliminar cada ''NA'' de un vector y reemplazarlo con un ''0'':

ifelse(is.na(vx), 0, vx)

para eliminar todas las filas que contengan ''NA'' de un marco de datos:

dfx = dfx[complete.cases(dfx),]

Todas estas funciones eliminan permanentemente ''NA'' o filas con una ''NA'' en ellas.

Sin embargo, a veces esto no es lo que usted desea: hacer una copia del marco de datos con una ''NA'' extirpada puede ser necesario para el próximo paso en el flujo de trabajo, pero en los pasos subsiguientes a menudo querrá recuperar esas filas (por ejemplo, para calcular un estadística de columnas para una columna que tiene filas faltantes causadas por una llamada previa a "casos completos" pero esa columna no tiene valores de "NA" en ella.

para ser lo más claro posible acerca de lo que estoy buscando: python / numpy tiene una clase, matriz enmascarada , con un método de máscara , que le permite ocultar --pero no eliminar - NA durante una llamada de función. ¿Hay una función análoga en R?


Exactamente qué hacer con los datos faltantes, que pueden marcarse como NA si sabemos que faltan, puede diferir de un dominio a otro.

Para tomar un ejemplo relacionado con series de tiempo, donde puede omitir, rellenar, interpolar o interpolar de manera diferente, ... es que solo el zoo (muy útil y popular) tiene todas estas funciones relacionadas con el manejo de NA :

zoo::na.approx zoo::na.locf zoo::na.spline zoo::na.trim

permitiendo aproximar (usando diferentes algoritmos), arrastrar hacia adelante o hacia atrás, usar interpolación o ajuste spline.

Otro ejemplo serían los numerosos paquetes de imputación faltantes en CRAN, que a menudo proporcionan soluciones específicas de dominio. [Así que si llamas R a DSL, ¿qué es esto? ¿"Soluciones específicas de subdominio para lenguajes específicos de dominio" o SDSSFDSL? Un buen trago :)]

Pero para su pregunta específica: no, no conozco un indicador de nivel de bits en la base R que le permita marcar observaciones como ''para ser excluido''. Supongo que la mayoría de los usuarios de R recurrirían a funciones como na.omit() et al o usarían la opción na.rm=TRUE que mencionaste.


La función na.exclude() suena como lo que desea, aunque es solo una opción para algunas funciones (importantes).

En el contexto de la adaptación y el trabajo con modelos, R tiene una familia de funciones genéricas para tratar las na.fail() : na.fail() , na.pass() , na.omit() y na.exclude() . Estos son, a su vez, argumentos para algunas de las funciones de modelado de claves de R, como lm() , glm() y nls() , así como funciones en MASS, rpart y paquetes de supervivencia.

Las cuatro funciones genéricas actúan básicamente como filtros. na.fail() solo pasará los datos si no hay NA, de lo contrario fallará. na.pass() pasa todos los casos. na.omit() y na.exclude() casos con NA y pasarán los otros casos. Pero na.exclude() tiene un atributo diferente que indica a las funciones que procesan el objeto resultante que tengan en cuenta las AN. Podría ver este atributo si hizo attributes(na.exclude(some_data_frame)) . Aquí hay una demostración de cómo na.exclude() altera el comportamiento de predict() en el contexto de un modelo lineal.

fakedata <- data.frame(x = c(1, 2, 3, 4), y = c(0, 10, NA, 40)) ## We can tell the modeling function how to handle the NAs r_omitted <- lm(x~y, na.action="na.omit", data=fakedata) r_excluded <- lm(x~y, na.action="na.exclude", data=fakedata) predict(r_omitted) # 1 2 4 # 1.115385 1.846154 4.038462 predict(r_excluded) # 1 2 3 4 # 1.115385 1.846154 NA 4.038462

Su na.action predeterminada, por cierto, está determinada por las options("na.action") y comienza como na.omit() pero puede configurarlo.