Hola, a partir de un data frame quiero crear una columna que aplique una secuencia numérica fija (1 a 12) por cada grupo de una de las variables. Si el grupo tiene más de 12 elementos, el contador tendría que reiniciarse a 1 en la fila 13, y así sucesivamente. El resultado deseado sería algo así: grupo seq A 1 A 2 A 3 A 4 A 5 A 6 A 7 A 8 A 9 A 10 A 11 A 12 A 1 A 2 B 1 B 2 B 3 B 4 B 5 B 6 C 1 C 2 C 3 C 4 C 5 C 6 C 7 C 8 C 9 C 10 Alguna idea? Gracias!! [[alternative HTML version deleted]]
Hola, Rubén: ¿Los datos de grupo están ordenados, o puedes tenerlos "revueltos"? Quiero decir con revueltos que primero tengas una "A", luego una "C", luego otra "A", etc. Un saludo Isidro Hidalgo Arellano Observatorio del Mercado de Trabajo Consejería de Economía, Empresas y Empleo http://www.castillalamancha.es/ -----Mensaje original----- De: R-help-es <r-help-es-bounces en r-project.org> En nombre de Rubén Coca Enviado el: jueves, 19 de julio de 2018 9:16 Para: Lista R <r-help-es en r-project.org> Asunto: [R-es] Secuencia fija de números por grupo Hola, a partir de un data frame quiero crear una columna que aplique una secuencia numérica fija (1 a 12) por cada grupo de una de las variables. Si el grupo tiene más de 12 elementos, el contador tendría que reiniciarse a 1 en la fila 13, y así sucesivamente. El resultado deseado sería algo así: grupo seq A 1 A 2 A 3 A 4 A 5 A 6 A 7 A 8 A 9 A 10 A 11 A 12 A 1 A 2 B 1 B 2 B 3 B 4 B 5 B 6 C 1 C 2 C 3 C 4 C 5 C 6 C 7 C 8 C 9 C 10 Alguna idea? Gracias!! [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Si están ordenados, una forma podría ser utilizando "table()". Por ejemplo: datosOrigen = rep(c("A", "B", "C"),c(14, 6, 10)) tabla = table(datosOrigen) grupo = c() secuencia = c() datos = data.frame(grupo = grupo, secuencia = secuencia) for (i in 1:length(tabla)){ parte = data.frame(grupo = rep(attr(tabla, "dimnames")$datos[i], tabla[i]), secuencia = rep(c(1:12), length.out = tabla[i])) datos = rbind(datos, parte) } Un saludo Isidro Hidalgo Arellano Observatorio del Mercado de Trabajo Consejería de Economía, Empresas y Empleo http://www.castillalamancha.es/ -----Mensaje original----- De: Isidro Hidalgo Arellano <ihidalgo en jccm.es> Enviado el: jueves, 19 de julio de 2018 9:28 Para: 'r-help-es en r-project.org' <r-help-es en r-project.org> Asunto: RE: [R-es] Secuencia fija de números por grupo Hola, Rubén: ¿Los datos de grupo están ordenados, o puedes tenerlos "revueltos"? Quiero decir con revueltos que primero tengas una "A", luego una "C", luego otra "A", etc. Un saludo Isidro Hidalgo Arellano Observatorio del Mercado de Trabajo Consejería de Economía, Empresas y Empleo http://www.castillalamancha.es/ -----Mensaje original----- De: R-help-es <r-help-es-bounces en r-project.org> En nombre de Rubén Coca Enviado el: jueves, 19 de julio de 2018 9:16 Para: Lista R <r-help-es en r-project.org> Asunto: [R-es] Secuencia fija de números por grupo Hola, a partir de un data frame quiero crear una columna que aplique una secuencia numérica fija (1 a 12) por cada grupo de una de las variables. Si el grupo tiene más de 12 elementos, el contador tendría que reiniciarse a 1 en la fila 13, y así sucesivamente. El resultado deseado sería algo así: grupo seq A 1 A 2 A 3 A 4 A 5 A 6 A 7 A 8 A 9 A 10 A 11 A 12 A 1 A 2 B 1 B 2 B 3 B 4 B 5 B 6 C 1 C 2 C 3 C 4 C 5 C 6 C 7 C 8 C 9 C 10 Alguna idea? Gracias!! [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Hola, suponiendo que tu data.frame se llama "midf" y tu variable (factor) se llama "grupo", una posible solución sería esta: midf$seq<-unlist(sapply(table(midf$grupo), function(x) seq(1,x, by=1))) midf Que guardaría la secuencia dentro de midf en una nueva variable llamada "seq" Saludos, Marcelino El 19/07/2018 a las 9:15, Rubén Coca escribió:> Hola, a partir de un data frame quiero crear una columna que aplique una > secuencia numérica fija (1 a 12) por cada grupo de una de las variables. Si > el grupo tiene más de 12 elementos, el contador tendría que reiniciarse a 1 > en la fila 13, y así sucesivamente. > El resultado deseado sería algo así: > > grupo seq > A 1 > A 2 > A 3 > A 4 > A 5 > A 6 > A 7 > A 8 > A 9 > A 10 > A 11 > A 12 > A 1 > A 2 > B 1 > B 2 > B 3 > B 4 > B 5 > B 6 > C 1 > C 2 > C 3 > C 4 > C 5 > C 6 > C 7 > C 8 > C 9 > C 10 > > Alguna idea? > Gracias!! > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > . >-- Marcelino de la Cruz Rot Depto. de Biología y Geología Física y Química Inorgánica Universidad Rey Juan Carlos Móstoles España