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.