Discussion:
[R-es] Secuencia fija de números por grupo
Rubén Coca
2018-07-19 07:15:50 UTC
Permalink
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]]
Isidro Hidalgo Arellano
2018-07-19 07:28:08 UTC
Permalink
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-***@r-project.org> En nombre de Rubén Coca
Enviado el: jueves, 19 de julio de 2018 9:16
Para: Lista R <r-help-***@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]]
Isidro Hidalgo Arellano
2018-07-19 07:45:02 UTC
Permalink
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 <***@jccm.es>
Enviado el: jueves, 19 de julio de 2018 9:28
Para: 'r-help-***@r-project.org' <r-help-***@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-***@r-project.org> En nombre de Rubén Coca
Enviado el: jueves, 19 de julio de 2018 9:16
Para: Lista R <r-help-***@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]]
Marcelino de la Cruz Rot
2018-07-19 07:45:56 UTC
Permalink
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
Post by Rubén Coca
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.
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
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
Loading...