如何根据perl中的另一列映射一列中的数据

时间:2018-06-06 01:06:50

标签: perl data-mapping

请帮忙。我是Perl和编码的新手,我有一个包含15列的大文件,还有一些缺少信息。我试图做的是选择缺少信息的列[13]和没有遗漏信息的列[4];然后使用列[4]作为键映射到列[2]并打印列[2]中的所有行。

以下是我的数据文件的外观(制表符分隔):

BC000   1   1   2   3   F       3   51                  51  
BC000   0   2           M                                   999
BC000   0   3   37  36  F                               65  
BC000   0   4   2   3   M                               50  50
BC000   0   5   2   3   F           45                  47  46
BC000   0   6   2   3   F       3   42                      
BC000   0   7   2   3   M                                   999
BC000   0   8   2   3   F       3                       42  
BC000   0   9   2   3   F       1                       39  
BC000   0   10  2   3   F       3                       35  
BC000   0   11  45  8   M                               11  
BC000   0   12  45  8   F                               9   

所有motherIDs,列[4]将有一个IndividualID,列[2](与motherID相同)

这是我的代码:

#!/usr/bin/perl
use warnings;
use strict;

my $filename = 'file.txt';

open (FILE, "<", $filename) or die "Cannot open file $!";

my @data = <FILE>;
my @column;
my $motherID;



foreach my $line (@data)
{
    @column = split ( /\t/, $line);

    if ($column[13] eq "" && $column[4] ne "" ) #missing YOB, but with mother ID
    {
        $motherID = join($column[2],$column[4]);


        if ("$motherID" eq "$column[2]")
        {
            print "$line\t\n";
        } 
    }
}

我试过这个,但它没有返回任何值。你能帮忙吗?我对此非常陌生,我正在尝试编写脚本以避免在MS Excel中手动映射列,因为它是一个超过4000行的大文件。很多人都提前感谢!

0 个答案:

没有答案