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.

Generador de consultas SAS: extracción de texto después de delimitadores duplicados.

Buenas tardes,

Esperemos que sea algo bastante sencillo. Tengo una columna de cadenas de texto, similares a la siguiente pero de longitudes diferentes:

1001_Q10_1

Todas siguen la misma regla, “código_NúmeroDePregunta_Respuesta”.

Estoy intentando crear 2 columnas, Código, Número de Pregunta, Respuesta.

Hasta ahora, tengo:

Código: 1001
Número de Pregunta: Q10

Pero no tengo la respuesta.

Dependiendo de la pregunta, esto puede llegar hasta la opción de respuesta 10, por lo que puede haber dos dígitos. No puedo simplemente tomar el último carácter.

¿Alguien sabe cómo hacer esto en el generador de consultas de SAS?

Saludos,
Andrew.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para extraer el elemento “Response” de la cadena en SAS, puedes utilizar la función “substr”. Aquí tienes un ejemplo de consulta en el SAS Query Builder:

    SELECT
      col AS OriginalString,
      substr(col, 1, index(col, '_Q') - 1) AS Code,
      substr(col, index(col, '_Q') + 1, index(col, '_', index(col, '_Q') + 1) - index(col, '_Q') - 1) AS QNumber,
      substr(col, index(col, '_', index(col, '_Q') + 1) + 1) AS Response
    FROM
      myTable
    

    Esta consulta asume que tu columna se llama “col” y que tu tabla se llama “myTable”. La función “substr” extrae una porción de la cadena según su posición de inicio y su longitud. La función “index” encuentra la posición de un carácter o subcadena especificada dentro de una cadena.

    La extracción de “Code” debería funcionar según tu método actual. La extracción de “QNumber” utiliza “index” dos veces para encontrar las posiciones de inicio y fin del número de Q, y luego “substr” extrae la porción relevante de la cadena. Finalmente, la extracción de “Response” comienza desde el carácter inmediatamente después del segundo guión bajo y va hasta el final de la cadena.

Comments are closed.