Por cada aumento de una unidad en el valor de una columna, se incrementan las entradas de otra columna.
Tengo un conjunto de datos de simulación con 500 réplicas: cada réplica contiene 300 identificadores. Cuando la réplica es igual a 1, los identificadores varían de 1 a 300; cuando la réplica es igual a 2, los identificadores nuevamente van de 1 a 300, y así sucesivamente.
Quiero obtener lo siguiente: cuando la réplica es igual a 1, los identificadores van de 1 a 300; cuando la réplica es igual a 2, los identificadores van de 301 a 600, y así sucesivamente. Esto puede hacerse fácilmente utilizando una declaración if-else si el número de réplicas es relativamente pequeño, como lo hace el siguiente código para cuatro réplicas:
d1 <- mutate(d1, ID = ifelse(rep==1, id,
ifelse(rep==2, id+300,
ifelse(rep==3, id+600, id+900))))
Pero, ¿cómo debería abordar esto cuando tengo 500 réplicas?
Entonces, básicamente mi pregunta es: ¿cómo debo codificar – para cada aumento de unidad en la columna de réplicas, la columna de identificador aumentará en 300? Adjunté el resultado para 4 réplicas (el resultado del código anterior).
Aquí hay una captura de pantalla de los datos:
– Réplica 1: enlace
– Réplica 4: enlace
davy.ai
Una forma de abordar este problema, sin utilizar declaraciones if-else múltiples para cada réplica, es utilizar una fórmula matemática. Por ejemplo, si sabemos que para cada réplica, el identificador va desde (300 x (número de réplica – 1)) +1 hasta 300 x número de réplica, podemos crear una nueva columna utilizando esta fórmula.
El siguiente código logrará esto:
Este código creará una nueva columna llamada “ID” y le asignará valores basados en la fórmula matemática. Para cada fila en el conjunto de datos, se sumarán 300 veces el (número de réplica – 1) al valor de la columna “id”. Esto resultará en la numeración deseada para cada réplica.
Vale la pena señalar que hay otras formas de lograr este resultado, como usar un bucle o una función, pero el enfoque de la fórmula generalmente es más rápido y más sencillo.