记录一个刚刚用本‘笨’办法解决的数据清洗和数据整理问题

前几天收到邮件,对之前我一篇论文的方法进行测试的时候有些疑问。我在复现的时候遇到了以下的问题:

我现在有三个结果,res1, res2 和 res3,他们的结构基本是一致的,都是两列:

N8   N84
N18 N4
N22 N64
N10 N17
...
M0P1 M0P2
...

如果不用 Python,只用 Excel, 如何找出三个结果中的重复值?(N2-N1视为与N1-N2等同)

我的笨办法(不用 VBA)

首先,分别按照编号大小左右排序,再从小到达按列排序,最后拼接字符串。然后只要找出三个结果中的重复值并高亮就行了。

首先,将数据清理一下。因为 M0P 开头的数据只有 M0P1 和 M0P2,我直接通过查找替换将所有 M0P1 换为 1001,M0P2换为1002(1001是因为N*中没有大于500的值,所以1001可以保证 unique)。

然后,我们将第二列向右移动一列,因为空出的这一列要放分列的输出。我们通过文本分列向导(数据->分列)将所有N*拆分成N和数字。如果选择按数据的“分隔符”进行拆分并将N设置为分隔符,则可以直接提取数字(这个在窗口预览的时候就能看到。具体可以参考微软的这个教程)。由于之前已经把M0P*转换为数字了,所以分列后这些1001、1002不会动;对于这两列,我们分别进行分列操作,这时所有N*中的数字则会以一个新列的形式出现在列旁。之后我们只要所有处理好的数据归回成完整的两列,我们的数据清理就完成了。

(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)

数据现在长这样:

8    84
18  4
22  64
10  17
...
1001 1002
...

之后,我们需要进行按行排序,这一步直接做的话我试了一些方案,都不行,除非用 VBA,否则都不能自动化操作。因为我的每行就两个数字,所以我们可以使用LARGE来实现类似排序的效果。假设我们第一列为excel的A列,第二列为B列,则使用=LARGE(A1:B1,2)就可以找出二者中小的数字,=LARGE(A1:B1,1)则找出二者中大的数字(具体参考这篇微软的教程:“If n is the number of data points in a range, then LARGE(array,1) returns the largest value, and LARGE(array,n) returns the smallest value.”)

这步完成后大概数据变成这样:

A   B        C    D
8   84      8   84
18  4       4  18
22  64       22  64
10  17      10  17
...
1001 1002   1001  1002
...

之后我们直接对C列(每行的最小值)进行按列排序就好,excel会帮我们扩展到全部四列(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved):

A   B        C    D
18  4       4  18
8   84      8   84
10  17      10  17
22  64       22  64
...
1001 1002   1001  1002
...

最后一步,为了比较重复值,我们需要将CD列挤成一列,这里是用拼接函数=CONCATENATE(C1,"_",D1)然后一样拉到底使其apply到所有行:

A   B        C    D      E
18  4       4  18   4_18
8   84      8   84  8_84
10  17      10  17  10_17
22  64       22  64 22_64
...
1001 1002   1001  1002  1001_1002
...

将三个结果粘进一个 Excel 文件中,假设拼接字符串的列在E、J、O,则全选这三列,选择“条件格式”->“重复值”,所有重复出现的字符串就会被高亮出来了!(具体参考这篇微软教程)。

至此,问题解决。办法应该是最笨的一种了,但优势是不需要VBA,对没有编程背景知识的用户(Copyright © https://blo友好g.csdn.net/s_gy_zetrov. All Rights Reserved)。

以上。

(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)


visitor tracker


DSML_用Excel实现按行排序后按列排序,最后高亮重复值相关推荐

  1. Java黑皮书课后题第8章:*8.16(对二维数组排序)编写一个方法,使用下面的方法头对二维数组排序。这个方法首先按行排序,然后按列排序

    *8.16(对二维数组排序)编写一个方法,使用下面的方法头对二维数组排序.这个方法首先按行排序,然后按列排序 题目 题目描述 破题 代码 运行实例 题目 题目描述 *8.16(对二维数组排序)编写一个 ...

  2. pandas对dataframe进行排序:单数据列排序、多数据列排序、NA值排序位置、排序算法

    pandas对dataframe进行排序:单数据列排序.多数据列排序.NA值排序位置.排序算法 目录 pandas对dataframe进行排序 #仿真数据 #基于单数据列进行dataframe排序

  3. R语言dplyr包arrage函数排序dataframe实战:单列排序、多列排序、自定义排序

    R语言dplyr包arrage函数排序dataframe实战:单列排序.多列排序.自定义排序 目录 R语言dplyr包arrage函数排序dataframe实战:单列排序.多列排序

  4. python excel处理重复行并统计个数_懂Excel就能轻松入门Python数据分析包pandas(五):重复值处理...

    经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死.后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器-- pandas 前言 有时候数据中出 ...

  5. 数据去重复_字典应用实例(每行每列都要去重复值)

    我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务.支持我,也为自己加油! 前面两节课中的去重复,不论是单张表里的去重复还是多张表里的去重 ...

  6. c语言讲两个数组合并_两列数据相互去掉重复值后合并

    大家好,今日继续讲VBA数组与字典解决方案的第27讲,内容是两列数据中相互去掉重复值之后将数据合并.这讲的内容利用到动态数组,固定数组,数组的合并,数组的转置等等. 还是先看实例,下面的工作表中A列和 ...

  7. python读excel乱码_Python读写excel练习_去除excel中乱码行,并添加列

    需求: 把app_student.xls里面的数据, 1.如果这一行数据里面有乱码(及包含?),那么就删掉 2.再加上一列,是否毕业 3.如果班级是天蝎座的话,毕业这一列写成毕业 4.其他班级的写成未 ...

  8. UiPath设置Excel表格自适应行高、自适应列宽或固定行高、列宽

    话不多说,上图,添加第三方包:BalaReva.Excel.Activities, 使用AutoFit Columns 设置列宽,设置属性(若需要固定值设置对应参数即可) 自动调整列宽.自动调整行高

  9. mysql分组失效_请教MySql中使用表子查询时,试着先排序后分组,出现排序失效的原因?...

    1,今天试着码了一下教程里的题目,是找出每一个班级的身高最高的学生,用的是先order by降序排序所有学生升高,再用 group by分组每一个班级取第一个值,却发现当使用子查询时,得到的仍旧是未排 ...

最新文章

  1. linux查看java运行日志,Linux下查看日志用到的经常使用命令
  2. Makefile (二)
  3. db2取数据库日期时间_DB2数据库取得当前时间的正确解析
  4. 谷歌开源文件访问漏洞审计工具 PathAuditor(详解)
  5. xmlhttp资料(收集)
  6. javaScript之函数,分支结构 ,循环结构(二)
  7. directx修复工具win7_魔兽争霸3不能初始化DirectX,怎么解决?说白了就是在游戏安装包下载之后,无法正常运行程序。...
  8. mysql查询学生成绩语句_SQL查询成绩之精典语句
  9. IP报文分片抓包简析
  10. 关于fiddler和charles手机代理以后无法上网的问题解决
  11. Redis 总结 —— 2022/2/6
  12. NLTK语料库nltk.download()安装失败及下载很慢的解决方法
  13. 【C++学习笔记】标准库类型vector
  14. selenium python 简书_通过python+selenium3实现浏览器刷简书文章阅读量
  15. One by wacom数位板安装及初步使用
  16. 【机器学习笔记37】模糊聚类分析(基于最大生成树)
  17. CC2530芯片基础实验
  18. 随机实现“泰坦”与“宙斯”之间的模拟交战。说明:本题以希腊神话中宙斯和泰坦间的交战为背景
  19. 无人机不装脚架的好处就是降落时会比较稳,不怕倾斜侧翻。
  20. c语言实验报告七大气科学,计算机实验报告

热门文章

  1. 选股技巧|如何选股|怎么选股
  2. FreeBSD服务器的安装与优化(3)
  3. 批量探测主机是否存活
  4. Ubuntu下包含2种远程桌面的方式:VINO-Server以及VNC Server
  5. 黑客们的往事(连载十) 凯文·米特尼克
  6. 模块的接口类型LC,SC,FC 分别代表什么意思?
  7. position详解
  8. 说真的,喜欢偶尔这样的激情解说!
  9. 《黑头人》(暂定)开发日志
  10. vim 插入模式小技巧