Combina pares de variables dentro de un marco de datos basándose en una expresión regular.
Quiero usar dplyr::coalesce
para encontrar el primer valor no faltante entre pares de variables en un dataframe que contiene múltiples pares de variables. El objetivo es crear un nuevo dataframe que tenga ahora solo una copia para cada par de variables (una variable de coalesce sin valores NA).
Aquí hay un ejemplo:
df <- data.frame(
A1=c(NA, NA, 3, 4, 5),
A2=c(1, 2, NA, NA, NA),
B1=c(NA, NA, 13, 14, 15),
B2=c(11, 12, NA, NA, NA))
Resultado esperado:
A B
1 11
2 12
3 13
4 14
5 15
Supongo que se podría usar una combinación de dplyr::coalesce
con tal vez dplyr::mutate_at
basado en expresiones regulares, pero no estoy seguro de cómo hacerlo. ¿Hay alguna manera de completar esta tarea con la gramática tidyverse?
¡Gracias!
EDIT: ¡gracias a todos por sus respuestas! Sin embargo, debería haber incluido la convención de nomenclatura para mis variables para facilitar la transferencia de sus respuestas a mi problema real. Lamento eso. Mis variables son variables de geoquímica nombradas en dos partes (nombre del elemento químico más nombre del núcleo).
Ejemplo: Al_TAC4.25.275
donde Al
es el elemento y TAC4.25.275
es el núcleo. Quiero coalescer los datos de 3 núcleos diferentes (segunda parte del nombre) para cada elemento (primera parte del nombre). Tengo 25 pares de elementos para coalescer.
davy.ai
Sí, puedes usar la función
dplyr::coalesce
para lograr esta tarea. Una forma de hacerlo es utilizandodplyr::mutate_at
y especificando los pares de variables a coalescer utilizando expresiones regulares. Aquí tienes un ejemplo:En este ejemplo, estamos utilizando
mutate_at
para aplicar la funcióncoalesce
a todas las variables en el dataframe que contienen un dígito (es decir, todos los pares de variables que queremos coalescer). La expresión regular\\d
coincide con cualquier dígito, y la funciónmatches
se utiliza para seleccionar las columnas que coinciden con la expresión regular. El símbolo~
indica que vamos a especificar una función, y el.
se refiere a las variables seleccionadas. La funcióncoalesce
reemplaza todos los valoresNA
con el primer valor no faltante para cada par de variables.Esto debería darte la salida esperada, con una columna por par de variables (es decir, una columna para A y una para B). Ten en cuenta que es posible que necesites ajustar la expresión regular para que coincida con la convención de nomenclatura de tus variables.