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.

Convertir una cadena de texto en un vector binario en R.

Estoy intentando agrupar un conjunto de revistas por descriptores y he estado pensando en convertir los descriptores en un vector binario en lugar de usar distancias de cadena (que he estado usando hasta ahora) para evitar problemas como la coincidencia de “Catalysis” y “Analysis” o la coincidencia de cadenas largas para coincidencias parciales (indeseadas).

Para implementar esta idea, he separado cada descriptor que las revistas pueden presentar en un conjunto de 266 cadenas (isolatedcat) en orden alfabético.

dput(head(isolated_cat))
c (“Contabilidad”, “Acústica Ultrasonidos”, “Enfermería Científica Avanzada Especializada”,
“Ingeniería Aeroespacial”, “Envejecimiento”, “Ciencias Agrícolas y Biológicas”)

Para cada revista en mi marco de datos, tengo una columna con un conjunto de descriptores, por ejemplo:

journals_STEM$Categories4dist[1]
[1] “Biomateriales Materiales electrónicos, ópticos y magnéticos Energía Química de materiales Superficies, recubrimientos y películas”

El resultado que espero es un vector de 266 elementos con 0 y 1 para cada categoría en isolatedcat que indique si los descriptores incluyen esa palabra o no (después estaba pensando en probar PCA y diferentes métodos de agrupación para separar las revistas en grupos).

Primero, intenté

as.numeric(isolated_cat %in% aux$Categories4dist[i])

lo cual obviamente (me di cuenta más tarde) solo funciona para revistas definidas por una sola categoría. He estado tratando diferentes combinaciones de grep, pero no he tenido suerte. ¿Existe alguna manera directa de lograr esto? Las únicas soluciones que he encontrado hasta ahora son demasiado complicadas y creo que me estoy perdiendo algo obvio.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás tratando de crear un vector binario para cada revista en tu marco de datos basado en los descriptores asociados con ella. Ya has creado un conjunto de 266 cadenas (isolated_cat) que deseas utilizar para crear el vector binario.

    Para crear el vector binario, puedes usar el operador %in% para comprobar si cada elemento de isolated_cat está presente en los descriptores asociados con cada revista. Puedes usar un bucle for para iterar por cada revista en tu marco de datos y crear un vector binario para cada una.

    Por ejemplo, para la primera revista en tu marco de datos:

    # Obtén los descriptores para la primera revista
    descriptores <- journals_STEM$Categories4dist[1]
    
    # Crea un vector vacío para almacenar los valores binarios
    vector_binario <- numérico(longitud(isolated_cat))
    
    # Itera a través de cada elemento de isolated_cat
    para (i en 1:longitud(isolated_cat)) {
      # Comprueba si el elemento está presente en los descriptores
      vector_binario[i] <- como.numerico(isolated_cat[i] %in% descriptores)
    }
    
    # Imprime el vector binario
    vector_binario
    

    Esto debería darte un vector binario de longitud 266 para cada revista en tu marco de datos. Luego puedes usar este vector para clusterizar las revistas usando PCA u otros métodos de clustering.

Comments are closed.