[R-es] Seleccionar valores consecutivos en un dataframe

Proyecto R-UCA r-uc@ @end|ng |rom uc@@e@
Sab Jun 17 09:30:06 CEST 2023


Buenas, 

Creo que esto se parece a lo estás buscando, un saludo.

> ejemplo <- read.csv('ejemplo.csv', header=TRUE, sep = ' ')
> head(ejemplo)
         dia     p   lim trat   sp  germ estac
1 2019-11-07 0.000 brown gfgs aege FALSE  fall
2 2019-11-08 0.000 brown gfgs aege FALSE  fall
3 2019-11-09 0.000 brown gfgs aege FALSE  fall
4 2019-11-10 0.079 black gfgs aege  TRUE  fall
5 2019-11-11 0.084 black gfgs aege  TRUE  fall
6 2019-11-12 0.081 black gfgs aege  TRUE  fall
> index <- which(diff(ejemplo$germ) != 0)
> ejemplo$cs <- cumsum(ejemplo$p)
> d <- diff(ejemplo$cs[index])
> d
 [1] 0.647 0.000 0.358 0.000 0.259 0.000 0.706 0.000 0.041 0.000 0.698 0.000
[13] 0.052
> d[seq(1, length(d), by = 2)]
[1] 0.647 0.358 0.259 0.706 0.041 0.698 0.052



-- 
--------------------------------------------------
http://knuth.uca.es/R
--------------------------------------------------
Proyecto R-UCA
--------------------------------------------------
Nombre: Manuel Muñoz Márquez
Departamento: Departamento de Estadística e Investigación Operativa
Institución: Escuela Superior de Ingeniería
Organización: Universidad de Cádiz
--------------------------------------------------

El vie, 16-06-2023 a las 09:27 +0200, Jaume Tormo via R-help-es escribió:
> Estimados eRReros,
> 
> Tengo un df como el adjunto (en txt y como objeto de R)
> Como veréis hay una columna T/F que se llama germ y cada fila corresponde a datos de un día.
> Me gustaría que R fuera siguiendo la columna germ y en cada serie de días con TRUE sumara el valor de la columna p. Se trata de saber si
> en esa serie de días con valor T el total de p es mayor que 1 o no.
> He hecho algo parecido con rle() que me cuenta la longitud de las series de TRUE, pero este siguiente paso no se como darlo.
> Si uso apply o subset me toma todas las filas del df con T en la columna germ. Lo que no se el como decirle a R que empiece por el
> principio y vaya tomando grupo a grupo.
> Me imagino que podría llegar a construir un bucle que lo hiciera, pero no quiero pasarme tres horas dándole vueltas si hay una función o
> combinación de funciones que lo hace ¿Alguna sugerencia o me pongo ya con el bucle?
> 
> Muchas gracias.
> 
> Jaume.
> 
> 
> -- 
> Dr. Jaume Tormo.
> Area of Ecology
> Department of Agrarian and Environmental Sciences
> Technological College. Agri-food and Environment
> University of Zaragoza, Spain
> 0034 974292678
> https://flipboard.com/@jaumetormo/hallazgos-interesantes-bj8opmboy
> https://acercad.wordpress.com/
> 
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-help-es__;!!D9dNQwwGXtA!X47Y3pOTwgTP8nnGrIAHAsqLIj41GL5Y_qVAKxL4V2xowSx0jdjNJQv9Zz6Lh2Rtb2ThSaKAeDHRi_WbaMQ$
>  



Más información sobre la lista de distribución R-help-es