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