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.
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 deisolated_cat
está presente en los descriptores asociados con cada revista. Puedes usar un buclefor
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:
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.