R语言如何将期刊描述符字符串转换为二进制向量用于聚类
核心思路
你之前的代码失效原因是Categories4dist列存储的是空格拼接的多分类字符串,没有拆分为独立的分类单元,直接用完全匹配逻辑即可避免你担心的子串误匹配问题,不需要用到grep类的模糊匹配。
单条记录转换示例
# 把单条多分类字符串拆分为独立分类向量 single_cats <- unlist(strsplit(journals_STEM$Categories4dist[1], split = " ")) # 生成266维0/1向量,完全匹配避免子串误判 binary_vec <- as.numeric(isolated_cat %in% single_cats)
批量转换为聚类可用的二进制矩阵
直接批量处理整列,输出的矩阵每行对应一个期刊,每列对应isolated_cat中的分类,可直接用于后续PCA、聚类计算:
binary_matrix <- t(sapply(journals_STEM$Categories4dist, function(x) { # 用\\s+匹配任意长度空白,避免多空格、制表符导致的拆分错误 current_cats <- unlist(strsplit(x, split = "\\s+")) as.numeric(isolated_cat %in% current_cats) })) # 给矩阵列名绑定分类名,方便后续结果解读 colnames(binary_matrix) <- isolated_cat
如果需要把二进制特征合并回原数据框,直接用cbind(journals_STEM, binary_matrix)即可。
内容的提问来源于stack exchange,提问作者Cris Urdiales
相关产品推荐
相关产品推荐

