Generar secuencias númericas puede parece trivial, sin embargo es una de las tareas que conforme hacemos arreglo de datos previo a un análisis, toma relevancia.
Se usa desde la creación de datasets de ejemplos hasta generar un ID para procesar un conjunto de datos.
El operador :
El operador binario : permite generar secuencias rápida y fácilmente cuando los elementos a los lados son números.
Nota: El comportamiento cambia cuando se involucran factores pues nos da las interacciones entre los factores.
Sin embargo este operador no permite generar secuencias que tengan un crecimiento/decremento diferente de 1.
Comando seq()
Este comando permite generar secuencias de números usando varios argumentos, los primeros son from, to y by.
seq(from = 1, to = 10)
[1] 1 2 3 4 5 6 7 8 9 10
Como esta función acepta los argumentos posicionalmente, se pueden omitir las etiquetas
seq(1, 10)
[1] 1 2 3 4 5 6 7 8 9 10
Para cambiar la magnitud del crecimiento/decremento usamos el argumento by:
seq(from = 1, to = 10, by = 3)
[1] 1 4 7 10
Puede generar secuencias de decimales:
seq(0.1, 3, 0.3)
[1] 0.1 0.4 0.7 1.0 1.3 1.6 1.9 2.2 2.5 2.8
Usar constantes del lenguaje:
seq(pi, 3 * pi, pi)
[1] 3.141593 6.283185 9.424778
También se puede usar negativos:
seq(-1, -10, -4)
[1] -1 -5 -9
O secuencias con decremento:
seq(10, 1, -3)
[1] 10 7 4 1
Nota: Es importante recalcar que el argumento by cuando se usan negativos o secuencias en decremento, requiere un número negativo. Esto guarda su lógica en la magnitud del crecimiento/decremento.
Comandos similares
Ademas R cuenta con comandos similares que simplifican la generación de secuencias
seq_along() que permite generar secuencias con base a un vector
seq_len() permite generar una secuencia de una longitud específica
seq_len() se usa:
seq_len(10)
[1] 1 2 3 4 5 6 7 8 9 10
Y seq_along() requiere de un vector por ejemplo usando las letras:
letters
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
Este comando no genera secuencias por sí mismo, pero es de gran útilidad para crear secuencias complejas.
Por ejemplo como crear secuencias del 1 al 9 de 3 en 3 repetido 3 veces:
rep(seq(1, 9, 3), 3)
[1] 1 4 7 1 4 7 1 4 7
Sin embargo una secuencia que generamos recurrentemente es aquella que se genera repitiendo los números de la secuencia un n número de veces, por ejemplo:
rep(seq(1, 9, 3), each = 3)
[1] 1 1 1 4 4 4 7 7 7
Ejemplos
Por ejemplo podemos generar un vector de identificadores para medidas repetidas 3 veces para los sujetos 3, 6, 9 y 12 que pertenecen a los grupos A, B, C y D.
rep(paste0(letters[1:4], seq(3, 12, 3)), each = 3)
Nota: R tiene algunas constantes integradas como pi, letters o LETTERS que permiten usar estos elementos sin escribirlos. Ademas el comando paste0 permite pegar sin espacios, números o letras.
Podemos crear un data.frame para 100 números aleatorios, con un identificador que los agrupe de cinco en cinco: