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/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20230616/1486f5ff/attachment.html> ------------ próxima parte ------------ An embedded and charset-unspecified text was scrubbed... Name: ejemplo.txt URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20230616/1486f5ff/attachment.txt> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: ejemplo.RData Type: application/octet-stream Size: 768 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20230616/1486f5ff/attachment.obj>
Hola Jaumecomo todos los valores de p son menores de 1....he entendido esto: por ejemplo en la fila 5 que sería el segundo TRUE, quieres que la nueva variable sea la suma del valor de la fila 4 mas el de la fila 5 y asi sucesivamente. ¿o me desvío mucho? En viernes, 16 de junio de 2023, 09:28:18 CEST, Jaume Tormo via R-help-es <r-help-es en r-project.org> 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 en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]]
Proyecto R-UCA
2023-Jun-17 07:30 UTC
[R-es] Seleccionar valores consecutivos en un dataframe
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 en r-project.org > https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-help-es__;!!D9dNQwwGXtA!X47Y3pOTwgTP8nnGrIAHAsqLIj41GL5Y_qVAKxL4V2xowSx0jdjNJQv9Zz6Lh2Rtb2ThSaKAeDHRi_WbaMQ$ >
Hola a todos, ¡Muchisimas gracias! Con esto que me dais resuelvo el problema y además he aprendido unas cuantas funciones nuevas. Jaume. On Fri, Jun 16, 2023 at 9:27?AM Jaume Tormo <jtormo en unizar.es> wrote:> 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/ > >-- 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/ [[alternative HTML version deleted]]