[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