创建矩阵我有一个多余的列表,它看起来像这样的输入:从冗余列表
Sample1.14 Water
Sample2.45 Air
Sample1.16 Dirt
Sample1.14 Water
Sample2.45 Air
Sample1.16 Dirt
Sample1.14 Water
Sample2.45 Air
Sample1.16 Dirt
Sample1.16 Dirt
Sample1.14 Dirt
Sample2.45 Air
Sample1.16 Air
我创建可计算每个样品多久给出结果水散,空气,灰尘(注意,这是只是示例数据,但结构相同)。
use warnings;
use strict;
my $inPut = "ExampleSample";
open(READ,$inPut) || die "Coult not read $inPut: $!";
my %sampleHash;
while (<READ>) {
chomp;
my @temp = split("\t",$_);
my $sample = $temp[0];
my $type = $temp[1];
$sampleHash{$type}{$sample} += 1;
}
这按预期工作,并给出作为输出:
$VAR1 = {
'Dirt' => {
'Sample1.16' => 4,
'Sample1.14' => 1
},
'Air' => {
'Sample1.16' => 1,
'Sample2.45' => 4
},
'Water' => {
'Sample1.14' => 3
}
};
由于这是安静的进一步下行的东西,我想坏的数据结构,把这个数据成我有些失落矩阵在。
所需的输出或换位这个例子中,没有真正的问题:
Sample1.14 Sample2.45 Sample1.16
Air 0 4 1
Dirt 4 0 4
Water 3 0 0
我真的坚持在这里,任何帮助将非常感谢!谢谢。
你的例子有错误的变量名称。 – simbabque
为了提供帮助,我们需要了解您的下游需求。如果您不知道,请告诉我们您以后打算如何处理数据。你现在的结构非常典型。看数据我会做同样的事情。按类型分组,然后对样本进行计数。这对应于您显示的表格,只要第一个键是行,第二个键是列。 – simbabque
谢谢你的抬头。下游我想创建一个带有矩阵结构的输出文件,以便查看哪个样本最常出现哪种类型,但由于分组是冗余的,我不太确定如何将数据转换为更易读的格式。 – chrys