我有一个大型数据集(29 列 x 19000 行),我希望能够比较每一行的值并打印描述性输出。
具体来说,我想查询 A 列(@WTcall)中的值,这实际上是一个通过/失败语句。如果数据失败,我想打印“失败声明”并移至下一行,但如果数据通过,我想继续描述数据。
接下来的问题是确定 X (@positive) 和 Y (@negative) 列中的数据属于哪种分类:
(前任:
如果 X 列和 Y 列 >= 0.6,则打印“ABC”
如果 X 列和 Y 列 < 0.6,则打印“CBA”
如果 X 列 >= 0.6 但 Y 列 < 0.6 打印“DEF”
如果 X 列 < 0.6 但 Y 列 >= 0.6 打印“FED”
否则打印“缺少数据”。)
我已经包含了我在下面编写的代码以及示例数据的子集。
我在发布之前运行的测试在代码中被注释掉了。简而言之,如果我注释掉“if 和 elsif 语句”列表,请打印“@WTcall\t@positive\t@negative\n”并将其通过 head 命令传送 - 我的变量似乎正在提取正确的信息。
问题出现在实际比较中,因为每一行都被分类为“Methylated\tMethylated\n”描述。我不清楚这是为什么。我知道我有 @WTcall 列应该匹配 $BadPosition(通过/失败检查)的条目。此外,如果我再次注释掉“if 语句”,则打印“@WTcall\n$BadPosition”并将其通过 sort 和 uniq 进行管道传输 - 我只得到“No_WT_Concensus”的一个值,因此那里应该没有拼写错误或匹配问题这些值。
我确信这个问题很明显并且正直盯着我的脸,所以我真的很感激任何帮助。
谢谢你。
代码:
#!/usr/bin/perl
use strict;
use …Run Code Online (Sandbox Code Playgroud)