[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