【发布时间】:2017-03-19 17:35:14
【问题描述】:
我对 bash 脚本和 python 编程很陌生;目前有 2 列包含以下数字序列:
Col 1:
1
2
3
5
7
8
Col 2:
101
102
103
105
107
108
需要从两列中提取数值范围并根据这两列中任何一列的中断出现次数打印它们,结果应如下:
1,3,101,103
5,5,105,105
7,8,107,108
已经收到有关如何使用 awk 从一列中提取数值范围的有用信息:- $ awk 'NR==1||sqrt(($0-p)*($0-p))>1{打印 p; printf "%s", $0 ", "} {p=$0} END{print $0}' 文件 - ;但是现在问题变得有点复杂了,因为必须包含带有另一个数字序列的第二列,因此需要在任意两列中出现序列中断的列中的范围。
为了增加一点复杂性,序列可以是升序和/或降序。
尝试使用 pandas(数据框)和 python 的 numpy 库找到解决方案。
提前致谢。
您好 MaxU,感谢您的回复,不幸的是,我遇到了以下情况的问题:
第 1 列:
7
8
9
10
11
Col 2:
52
51
47
46
45
其中第二列中的数字序列是从开头递减的;结果生成:
7,11,45,52
代替:
7,8,51,52
8,11,45,47
干杯。
【问题讨论】:
-
为什么是 R 标签??
-
这在 R 中使用
rle和diff是相当可行的。 -
我认为您将不得不解释该序列是如何工作的。