es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Identifique y elimine los valores ruidosos/extravagantes de una serie de datos en R.

Tengo un dataframe con fecha, temperatura y tiempo. Este dataframe puede tener miles de líneas, dependiendo del número de mediciones de temperatura. A veces hay errores de medición y uno o más valores incorrectos aparecen en el dataframe. ¿Cómo puedo eliminar automáticamente las líneas con temperaturas incorrectas en R?

Aquí hay un ejemplo:

  fecha       temp    tiempo
1   2021-09-01    14  04:59:27
2   2021-09-01    15  04:59:28
3   2021-09-01    15  04:59:30
4   2021-09-01    14  04:59:30
5   2021-09-01    14  04:59:32
6   2021-09-01    10  04:59:32
7   2021-09-01    14  04:59:33
8   2021-09-01    14  04:59:35
9   2021-09-01    15  04:59:35
10  2021-09-01    14  04:59:36
11  2021-09-01    15  04:59:37
12  2021-09-01     6  04:59:38
13  2021-09-01     6  04:59:39
14  2021-09-01     6  04:59:41
15  2021-09-01    14  04:59:41
16  2021-09-01    15  04:59:42
17  2021-09-01    15  04:59:44
18  2021-09-01    14  04:59:44
19  2021-09-01    15  04:59:45
20  2021-09-01    15  04:59:45
21  2021-09-01    15  04:59:45

(…)

Por supuesto, las filas 6, 12, 13 y 14 no son correctas debido a que esta variación en segundos es imposible, y quiero eliminarlas.

Enfatizando: necesito una forma automática de identificar y eliminar estas filas, ya que puedo tener otros casos similares en miles de filas.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Puedes utilizar el paquete dplyr para filtrar las filas con temperaturas incorrectas. En primer lugar, puedes agrupar el marco de datos por fecha y hora, y luego utilizar la función filter para eliminar cualquier fila con temperaturas que no estén dentro de un determinado rango. Por ejemplo, si quieres eliminar cualquier fila con temperaturas por debajo de 10 o por encima de 15, puedes utilizar el siguiente código:

    library(dplyr)
    
    df %>% 
      group_by(date, time) %>% 
      filter(temp >= 10 & temp <= 15)
    

    Esto filtrará cualquier fila con temperaturas fuera del rango especificado.

Comments are closed.