es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  , , , ,

Answer

  1. Avatar for 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:

    d1 <- mutate(d1, ID = (id + (300 * (rep - 1))))
    

    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.

Comments are closed.