美文网首页小白的数据分析学习
一分钟数据清洗: K-Means 聚类的模糊标准化

一分钟数据清洗: K-Means 聚类的模糊标准化

作者: 村野孤云 | 来源:发表于2019-12-28 13:46 被阅读0次

    来自一个师兄的提问:
    想做中药成分复方药物分析的K-Means 聚类,如何快速进行模糊标准化?

    实现要求:

    手头有270个复方,然后有118味兴趣药物,想研究复方中出现兴趣药物的情况。如果复方的药物出现在研究的兴趣药物中,则标1,否则标0。把每个复方转换成只有“1”和“0”的表格数据。

    目标效果

    image.png

    参考文献:刘广, 孙艳秋. 基于K-Means聚类算法的消渴方剂研究 [J]. 中华中医药学刊, 2017(1):173-178,共6页.

    怎么办?

    嗯,对于我这种EXCEL并不会用的人来说,最简单的想法就是自己做个表格,慢慢匹配咯。然后手动根据匹配结果,输入”0“和”1“咯,但是这也绝望了吧,270个方剂,平均有一个方15个药物,我要核对15×270=4050次,对表格进行118×270=31860次的重复输入。
    这太难了~

    R语言解决方法

    当一个数据处理的操作需要重复操作3次以上,那么这样的操作应该可以通过编程解决掉它~
    幸亏会一点R语言,这个需求实现起来还是比较简单的,一个for循环就搞定了~

    下面展示下出来步骤~
    1.数据准备

    处方汇总表×1:


    image.png

    研究的兴趣药物列表×1
    原数据有118个,限于截图这里展示一部分。


    image.png
    2.写个循环解决它
    Talk is cheap, so let me show you the codes.
    #1.载入需要的包
    options(stringsAsFactors = F)
    library(tidyverse)
    library(openxlsx)
    #2.导入处方数据
    prescription_all <- read.xlsx("处方汇总.xlsx",sheet = 1,colNames =T)
    #删掉第一列,整理下
    prescription_all <- prescription_all %>% 
            .[,-1] %>% t() #共270个处方
    prescription_all <- as.data.frame(prescription_all )
    ##3.导入要筛选的药物
    herb_all <- read.xlsx("整理药物名录.xlsx",sheet =1,colNames = F) 
    herb_all <- herb_all$X1
    ##4.写个循环操作下
    output <- list()
    
    for (i in 1:ncol(prescription_all)) {
      print(i)
      output[[i]] <- herb_all%in%na.omit(prescription_all[,i])
      
    }
    #5.合并并修改名称
    out_data <- do.call(rbind,output)
    out_data <- apply(out_data, 2, as.numeric) %>% 
      as.data.frame()
    colnames(out_data) <- herb_all
    rownames(out_data) <- paste0("处方",1:270)
    #####6.验证
    sort(prescription_all$`2` %>% 
      na.omit())
    
    sort(herb_all[out_data[2,]==1])
    
    
    ##7.输出,收工~
    out_data$"处方名" <- rownames(out_data)
    out_data <- select(out_data,"处方名",everything())
    write.xlsx(out_data,"药物整理数据.xlsx")
    
    
    

    输出结果:

    image.png

    耗时计算:

    image.png

    人工跑断腿,R语言循环只要1秒钟~
    不知道大家有没有这样的需求,抛砖引玉,提供下参考~

    相关文章

      网友评论

        本文标题:一分钟数据清洗: K-Means 聚类的模糊标准化

        本文链接:https://www.haomeiwen.com/subject/nolsoctx.html