如何使用 plink/Unix 将数据从科学计数法转换为十进制?

How can I use plink/Unix to convert data from scientific notation to decimal?

我处理遗传数据。我刚刚找到一台超级计算机来帮助进行遗传分析,但我需要将数据转换为超级计算机想要的格式:两列,一列包含染色体信息,另一列包含 p 值。 p值一栏不能有任何字母,但是我有的数据是科学计数的,像这样:

rs191895619 1.052e-05
rs140779862 0.4406
rs11127542 0.9771
rs112183333 0.02569
rs191067167 0.427
rs111321342 1.042e-05

在不能有字母的列中放置几个​​ E。

我尝试使用 grepgrep "*e*" filename.txt > outputfilename.txt 以及 grep "*e-05" filename.txt > outputfilename.txt 将它们移动到它们自己的文件中,但它两次都给了我一个空白的输出文件,即使所有5000 行科学标记的数据已移至它们自己的文件中,我不知道如何将数据更改为十进制表示法,除非单独编辑每一行,每个文件需要几天时间。

有没有我可以给 plink 的命令,以便它给我的数据首先不是科学计数法?或者我可以在 plink 或 Unix 中使用的命令将我拥有的科学计数法转换为十进制计数法?

您可以使用 awk 将科学转换为十进制:

awk '{printf "%s %f\n", , }' file

输出:

rs191895619 0.000011
rs140779862 0.440600
rs11127542 0.977100
rs112183333 0.025690
rs191067167 0.427000
rs111321342 0.000010

您可以通过更改 printf 中的 %f 部分来调整精度。


另请参阅:

  • How remove scientific notation in awk?