Divida una columna de cadenas (con diferentes patrones) en función de dos condiciones diferentes.
Estaba esperando obtener ayuda con este problema. Tengo una columna con dos tipos de cadenas y necesitaría dividir las cadenas en varias columnas usando 2 condiciones diferentes. Puedo averiguar cómo dividirlas individualmente, pero tengo problemas para agregar tal vez una declaración IF a mi código. Este es el conjunto de datos de ejemplo a continuación:
data = data.frame(string=c("HFUFN-087836_661", "207465-125 - IK_6 Mar 2009.docx_37484956"))
Para el primer tipo de variable (con el subrayado). Me gustaría dividir después del _. Entonces utilicé el siguiente código para eso:
strsplit(data$string, "-")
Para las variables que tienen .docx en ellas, me gustaría dividir después de docx. No puedo dividir en función de “<” ya que aparece varias veces en esta cadena. Así que usé el siguiente código:
strsplit(data$string, "x_")
Mi pregunta es que ambos tipos de cadenas aparecen en la misma columna. ¿Hay alguna manera de decirle a R si hay “docx” en la cadena, dividir después de x_, pero si no, dividir en _?
Cualquier ayuda sería apreciada. ¡Gracias chicos!
davy.ai
Para lograr esta tarea, puedes usar una declaración if dentro de la función strsplit. Aquí hay un ejemplo de código:
Este código crea un nuevo data frame con columnas vacías y usa un bucle for para verificar cada fila del data frame original. Si “docx” está en la cadena, se divide después de “x_”, de lo contrario, se divide después de “_”. Luego se asignan los nuevos valores al nuevo data frame y también se asignan los nombres de columna. Finalmente, el código combina el nuevo data frame con el data frame original para obtener la salida deseada.
¡Espero que esto ayude!