我想评估一列值中的每一行并创建新列,每个新列都有一个 1 标记初始列中高于特定值的任何行,并为所有剩余行标记 0。
例如,从本专栏开始:
是否有一种简单的方法可以在unix中编写脚本来完成此任务?非常感谢您的任何意见!
这两遍 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