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.

Agrupe los datos suavizados en intervalos de 1 minuto y obtenga el rango en r.

Tengo un data frame suavizado durante una media de 0.5 segundos.
Necesito agrupar los datos en intervalos de 1 minuto y obtener la diferencia zdiff = zmax – zmin para esos intervalos de 1 minuto.
Todas las filas (120 filas) dentro de un período de 1 minuto deben tener el mismo valor de z
diff.

Utilicé la función cut de la siguiente manera.
Pero dividió los datos en intervalos de 1 minuto. Sin embargo, necesito tener el mismo valor de z_diff para todas las filas dentro del intervalo de 1 minuto.
¿Cómo debo hacerlo sin dividir los datos en r?

df1min <- dfselected %>% groupby(TimeInterval = cut(dfselected$Timestamp, “60 sec”)) %>% summarise(zdiff = max(z) – min(z))

datos de muestra

Timestamp <- c(“10:50:00.5”, “10:50:01.0”, “10:50:01.5”, “10:50:02.0”, “10:50:02.5”, “10:50:03.0”)

z <- c(1, 2, 3, 5, 8, 7)

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para calcular el z_diff para todas las filas dentro de un intervalo de 1 minuto, sin dividir los datos, puedes usar la función floor para agrupar los datos por intervalos de minutos y luego calcular el valor de z_diff para cada grupo. Puedes hacer esto utilizando el paquete dplyr de la siguiente manera:

    “`{r}
    library(dplyr)

    Convertir Timestamp a formato POSIXct

    Timestamp <- as.POSIXct(Timestamp, format = “%H:%M:%OS”)

    Agrupar los datos por intervalos de minutos

    df_1min <- df_selected %>%
    mutate(minute = floor(Timestamp/60)) %>%
    group_by(minute) %>%
    summarise(z_diff = max(z) – min(z))

    Combinar los valores de z_diff de nuevo al marco de datos original

    df_selected <- df_selected %>%
    mutate(minute = floor(Timestamp/60)) %>%
    left_join(df_1min %>% select(minute, z_diff), by = “minute”)
    “`

    Esto crea una nueva columna “minute” en el marco de datos original que agrupa los datos por intervalos de minutos utilizando la función floor. Luego, los datos se agrupan por estos intervalos de minutos y se calcula el valor de z_diff para cada grupo. Finalmente, los valores de z_diff se combinan de nuevo en el marco de datos original utilizando la función left_join.

    Ten en cuenta que esto asume que los datos ya están ordenados por Timestamp en orden ascendente. Si este no es el caso, puedes agregar una línea arrange(Timestamp) antes de la llamada a la función mutate.

Comments are closed.