为高于特定值的初始参考列的每一行创建带有标志的新列

问题描述 投票:0回答:1

我想评估一列值中的每一行并创建新列,每个新列都有一个 1 标记初始列中高于特定值的任何行,并为所有剩余行标记 0。

例如,从本专栏开始:

我想创建新列来标记高于 0.5 的每一行,如下所示:

是否有一种简单的方法可以在unix中编写脚本来完成此任务?非常感谢您的任何意见!

unix
1个回答
0
投票

这两遍 awk 脚本应该可以完成这项工作:

$ awk '
NR==FNR {                                             # 1st pass 
    n+=($1+0>0.5)                                     # count the # of values>0.5
    next
}
n {                                                   # 2nd pass
    for(i=(n+1);i>1;i--)                              # create cols
        $i=(FNR==1?"EV"(i-1):($1>0.5&&i==(s+2)&&++s)) # fill cols with 0s/1s
}1' file file                                         # output

输出:

FD EV1 EV2 EV3
0.1 0 0 0
0.4 0 0 0
0.6 1 0 0
0.2 0 0 0
0.9 0 1 0
1.2 0 0 1
0.3 0 0 0
© www.soinside.com 2019 - 2024. All rights reserved.