Cómo encontrar una coincidencia dentro de una cadena basada en un carácter de otra columna.
Tengo estos datos:
df1 <- data.frame(matrix(nrow = 2, ncol = 2))
colnames(df1) <- c("ca", "ea")
df1$ca <- c("A=C,T=G", "T=C,G=G")
df1$ea <- c("G", "T")
Y quiero crear una nueva columna llamada “match” que me entregue la letra en la columna “ca” que sea igual a la letra en la columna “ea”. Por lo tanto, mi resultado se vería así:
df1 <- data.frame(matrix(nrow = 2, ncol = 2))
colnames(df1) <- c("ca", "ea")
df1$ca <- c("A=C,T=G", "T=C,G=G")
df1$ea <- c("G", "T")
df1$match <- c("T", "C")
Es complicado porque en la primera instancia la letra que quiero comparar sigue al “=”, pero en la segunda instancia la precede.
davy.ai
Para crear una nueva columna llamada “match” en el data frame “df1” que le da la letra en la columna “ca” que es igual a la letra en la columna “ea”, necesitamos usar la funcion
str_replace
del paquetestringr
para reemplazar todos los caracteres en la columna “ca” que no son iguales al caracter en la columna “ea” con una cadena vacía. Podemos hacer esto usando el siguiente código:Este código reemplaza todos los caracteres en la columna “ca” que no están presentes en la columna “ea” con una cadena vacía, extrayendo efectivamente solo los caracteres que coinciden con los de la columna “ea”. Los valores resultantes luego se asignan a la nueva columna “match”. La salida será la siguiente: