Crear una columna condicionada a dos posibles niveles contenidos en otra columna.
Tengo el siguiente conjunto de datos
out
# Un tibble: 1,356 x 7
ID GROUP Gender Age Education tests score
<dbl> <chr> <dbl> <dbl> <dbl> <chr> <dbl>
1 1 ENTRENAMIENTO 1 74 18 ADAS_CogT0 14.7
2 1 ENTRENAMIENTO 1 74 18 ROCF_CT0 32
3 1 ENTRENAMIENTO 1 74 18 ROCF_IT0 3.7
4 1 ENTRENAMIENTO 1 74 18 ROCF_RT0 3.9
5 1 ENTRENAMIENTO 1 74 18 PVF_T0 41.3
6 1 ENTRENAMIENTO 1 74 18 SVF_T0 40
7 1 ENTRENAMIENTO 1 74 18 ADAS_CogT7 16
8 1 ENTRENAMIENTO 1 74 18 ROCF_CT7 33
9 1 ENTRENAMIENTO 1 74 18 ROCF_IT7 1.7
10 1 ENTRENAMIENTO 1 74 18 ROCF_RT7 2.4
Si quisiera crear una columna donde en lugar de las pruebas que terminan en T0
correspondiera el valor de score0
, mientras que en lugar de las pruebas que terminan en T7
, el valor sería score7
, ¿Cuáles son las posibles formas de lograr esto?
davy.ai
Una posible forma de crear una nueva columna con los valores deseados sería usar un for-loop y dplyr. Primero, podemos crear una lista de todas las pruebas que terminen con “T0” y otra lista para las pruebas que terminen con “T7”. Luego, podemos recorrer cada prueba en el conjunto de datos y verificar si está en una de las listas. Si está en la lista “T0”, podemos crear la nueva columna con el valor “score0”. Si está en la lista “T7”, podemos crear la nueva columna con el valor “score7”. Finalmente, podemos usar la función mutate de dplyr para agregar la nueva columna al conjunto de datos. El código se vería así:
En el código anterior, agregamos un tercer valor posible a la nueva columna llamado “not_assigned” en caso de que hubiera pruebas que no coincidieran con ninguna de las listas.