【发布时间】:2021-11-25 19:22:29
【问题描述】:
我有一些看起来像这样的数据:
chr1 3861154 N 20
chr1 3861155 N 20
chr1 3861156 N 20
chr1 3949989 N 22
chr1 3949990 N 22
chr1 3949991 N 22
我需要做的是根据第 2 列给出一个代码。如果该值等于上一行的值加一,那么它们来自同一个系列,我需要在新列中给它们相同的代码.该代码可能是该系列第一行的值。此示例所需的输出是:
chr1 3861154 N 20 3861154
chr1 3861155 N 20 3861154
chr1 3861156 N 20 3861154
chr1 3949989 N 22 3949989
chr1 3949990 N 22 3949989
chr1 3949991 N 22 3949989
我正在考虑使用 awk,但这当然不是必需的。 关于如何使这项工作的任何想法?
编辑以添加我正在使用的代码:
awk 'BEGIN {var = $2} {if ($2 == var+1) print $0"\t"var; else print $0"\t"$2; var = $2 }' test
我认为这个想法是存在的,但还不完全正确。我得到的结果是:
chr1 3861154 N 20 3861154
chr1 3861155 N 20 3861154
chr1 3861156 N 20 3861155
chr1 3949989 N 22 3949989
chr1 3949990 N 22 3949989
chr1 3949991 N 22 3949990
谢谢!
【问题讨论】: