gpt4 book ai didi

linux - 将小于特定阈值的数字替换为零

转载 作者:太空宇宙 更新时间:2023-11-04 05:32:49 25 4
gpt4 key购买 nike

我有一个 .csv 格式的大型数据表(见下文)。如果每列和行中的数字小于某个值(比如 0.1),我想用零替换它。

有人可以帮我吗?非常感谢。

我想这可以用 sed 来完成,如 this example 所示

BCC_ACR_CR  BCC_ACR_CU  BCC_ACR_FE  BCC_ACR_MN  BCC_ACR_MO
0.2826027 3.89E-12 0.58420346 2.23E-13 0.2105587
0.27986588 3.80E-12 0.58501168 2.27E-13 0.20890705
0.27986588 3.80E-12 0.58501168 2.27E-13 0.20890705
0.27986588 3.80E-12 0.58501168 2.27E-13 0.20890705
0.28038733 3.81E-12 0.58196375 5.88E-05 0.21239142
0.26855376 3.27E-12 0.60364524 2.06E-13 0.11205138
0.27220042 3.28E-12 0.60349573 2.08E-13 0.11530944
0.36294869 3.14E-12 0.50515464 1.64E-13 3.12E-12
0.36294869 3.14E-12 0.50515464 1.64E-13 3.12E-12
0.40837234 3.07E-12 0.47202708 1.73E-13 3.03E-12
0.3643896 3.25E-12 0.50431576 1.63E-13 3.14E-12
0.3643896 3.25E-12 0.50431576 1.63E-13 3.14E-12
0.35885258 3.21E-12 0.50978952 1.64E-13 3.12E-12

最佳答案

这是 GNU awk 的一个。字段分隔符被假定为一段空格,因此不允许空字段:

$ gawk -v value=0.1 '                        # give treshold values as parameter
BEGIN { RS="( +\n?|\n)" } # every field is considered a record
{
ORS=RT # RT stores actualized RS
if($0<value) # comparison
$0=sprintf("0%-" length()-1 "s","") # format data to fit the field
}1' file # output

输出:

BCC_ACR_CR  BCC_ACR_CU  BCC_ACR_FE  BCC_ACR_MN  BCC_ACR_MO
0.2826027 0 0.58420346 0 0.2105587
0.27986588 0 0.58501168 0 0.20890705
0.27986588 0 0.58501168 0 0.20890705
0.27986588 0 0.58501168 0 0.20890705
0.28038733 0 0.58196375 0 0.21239142
0.26855376 0 0.60364524 0 0.11205138
0.27220042 0 0.60349573 0 0.11530944
0.36294869 0 0.50515464 0 0
0.36294869 0 0.50515464 0 0
0.40837234 0 0.47202708 0 0
0.3643896 0 0.50431576 0 0
0.3643896 0 0.50431576 0 0
0.35885258 0 0.50978952 0 0

关于linux - 将小于特定阈值的数字替换为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59365052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com