Jose Miguel Contreras
2022-Jul-08 12:25 UTC
[R-es] Calcular vector, por filas, que cumpla una condición
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
Javier Marcuzzi
2022-Jul-08 13:07 UTC
[R-es] Calcular vector, por filas, que cumpla una condición
Estimado Busque en internet data.frame seleccionar por condición, dee haber más de 10 formas distintas.Todas válidas, y si hay tantas debe ser porque cada una tiene una aparente ventaja o gusto personal sobre la otra. Df[df$columna == ´quiero´,] Javier Rubén Marcuzzi> El 8 jul. 2022, a las 09:25, Jose Miguel Contreras <jmcontreras en ugr.es> escribió: > > 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 en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es
Jorge I Velez
2022-Jul-08 13:44 UTC
[R-es] Calcular vector, por filas, que cumpla una condición
Jose Miguel, La función rle puede ayudarte a hacer lo que quieres. Saludos, Jorge.- El El vie, 8 de jul. de 2022 a la(s) 7:25 a. m., Jose Miguel Contreras < jmcontreras en ugr.es> escribió:> 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 en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Sent from my phone. Please excuse my brevity and misspelling. [[alternative HTML version deleted]]
Álvaro Hernández Vicente
2022-Jul-08 15:11 UTC
[R-es] Calcular vector, por filas, que cumpla una condición
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 en 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.