如何使用R校验实验鼠笼号是否同时存在于3份记录清单中
多份实验鼠笼号记录匹配分类方法
前置准备
先统一处理三份原始数据,避免格式差异导致匹配失效:
- 分别从学校计费官网、个人Excel、实验室管理网站导出笼号数据,单独提取笼号所在列
- 统一所有笼号格式:去除首尾空格、统一字母大小写、删除多余特殊字符,单份记录内先做去重处理,最终导出为单列文本/Excel列格式
方法1:用Python快速分类(代码量少,准确率高)
直接用集合运算实现多集合的交集、差集计算,代码示例:
# 读取三份处理好的笼号数据,转为集合自动去重 with open('school_cage.txt', 'r', encoding='utf-8') as f: school_set = set([line.strip() for line in f if line.strip()]) with open('personal_cage.txt', 'r', encoding='utf-8') as f: personal_set = set([line.strip() for line in f if line.strip()]) with open('lab_cage.txt', 'r', encoding='utf-8') as f: lab_set = set([line.strip() for line in f if line.strip()]) # 各分类结果计算 all_three = school_set & personal_set & lab_set # 三份均存在 school_personal_only = (school_set & personal_set) - lab_set # 仅学校+个人 school_lab_only = (school_set & lab_set) - personal_set # 仅学校+实验室 personal_lab_only = (personal_set & lab_set) - school_set # 仅个人+实验室 school_only = school_set - personal_set - lab_set # 仅学校 personal_only = personal_set - school_set - lab_set # 仅个人 lab_only = lab_set - school_set - personal_set # 仅实验室 # 可直接打印或写入文件输出结果 print("三份均存在的笼号:", all_three) print("仅存在于两份的笼号-学校+个人:", school_personal_only) print("仅存在于两份的笼号-学校+实验室:", school_lab_only) print("仅存在于两份的笼号-个人+实验室:", personal_lab_only) print("仅存在于学校的笼号:", school_only) print("仅存在于个人Excel的笼号:", personal_only) print("仅存在于实验室的笼号:", lab_only)
方法2:用Excel函数实现(无需代码基础)
把三份去重后的笼号分别放在同一个Excel文件的A、B、C三列:
- 把所有出现过的笼号去重后粘贴到D列
- E1单元格输入函数
=COUNTIF(A:A,D1)+COUNTIF(B:B,D1)+COUNTIF(C:C,D1),下拉填充整列 - 按E列值筛选即可:
- E值为3:对应笼号在三份记录中都存在
- E值为2:对应笼号仅在两份记录中存在
- E值为1:对应笼号仅在一份记录中存在
内容的提问来源于stack exchange,提问作者Ahmad El-Hamamy
相关产品推荐
相关产品推荐

