[R-es] Calcular vector, por filas, que cumpla una condición
Álvaro Hernández Vicente
@|v@rohv @end|ng |rom um@e@
Vie Jul 8 17:11:23 CEST 2022
Hola, José Miguel:
Yo lo pasaría a formato "ancho" (dos columnas con "Entra" y "Sale") y
las uniría.
library(tidyverse)
df <- data.frame(n = c(12, 50, 75, 100, 135), estado = c("Entra",
"Sale", "Entra", "Sale", "Entra"))
df |>
add_case(n = 150, estado = "Sale") |>
mutate(id = cumsum(ifelse(estado == "Entra", 1, 0))) |>
pivot_wider(names_from = "estado", values_from = "n") |>
mutate(dif = paste0(Entra, ":", Sale - 1))
Ya de ahí generalizas como necesites (cambiando el 150 o dejando solo el
vector, p. ej.).
Un saludo,
Álvaro
On 7/8/22 14:25, Jose Miguel Contreras wrote:
> Hola a todos
>
> Quería preguntaros por una forma de hacer esto…
>
>
> Supongamos que tengo un data Frame parecido a esto:
>
>
> df <- data.frame(c(12,50,75,100,135), c("Entra", "Sale", "Entra", "Sale", "Entra"))
> names(df) <- c("n", "estado”)
>
> n estado
> 1 12 Entra
> 2 50 Sale
> 3 75 Entra
> 4 100 Sale
> 5 135 Entra
>
> Donde n como máximo puede ser 150, por ejemplo.
>
> Necesitaría extraer un vector con los índices donde el estado es = a “Entra”, hasta que “Sale”.
>
> Es decir, necesitaría que el vector resultante sea c(12:49, 75:99, 135:150).
>
> Gracias de antemano
>
> Saludos
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
--
Álvaro Hernández Vicente
Investigador predoctoral (FPU-UM).
Grupo de Investigación Cardiología Clínica y Experimental.
Departamento de Medicina Interna.
Universidad de Murcia, Murcia, Spain.
Edif. LAIB/Departamental, despacho 2.57.
Campus de Ciencias de la Salud, Universidad de Murcia.
Avenida Buenavista, s/n, 30120, El Palmar, Murcia.
Más información sobre la lista de distribución R-help-es