On Sat, Jun 30, 2012 at 12:21 AM, John W. Krahn <jwkr...@shaw.ca> wrote:
> lina wrote:
>>
>> On Thu, Jun 28, 2012 at 4:44 PM, John W. Krahn<jwkr...@shaw.ca>  wrote:
>>>
>>> lina wrote:
>>>>
>>>>
>>>> I have some data like:
>>>>
>>>> 0.35 3.41 1
>>>> 0.35 4.24 1
>>>> 0.35 4.35 2
>>>> 0.36 0.36 1
>>>> 0.36 1.32 1
>>>> 0.36 1.45 1
>>>> 0.36 1.46 1
>>>>
>>>>
>>>> wish the output look like
>>>>
>>>>        0.36 1.32 1.45 1.46  3.41 4.24 4.35
>>>> 0.35  0      0       0     0       1    1      2
>>>> 0.36  1      1       1     1       0    0      0
>>>
>>>
>>> $ echo "0.35 3.41 1
>>>
>>> 0.35 4.24 1
>>> 0.35 4.35 2
>>> 0.36 0.36 1
>>> 0.36 1.32 1
>>> 0.36 1.45 1
>>> 0.36 1.46 1" | perl -e'
>>>
>>> my ( @columns, %data );
>>> while (<>  ) {
>>>    my ( $row, $col, $val ) = split;
>>>    $data{ $row }{ $col } = $val;
>>>    push @columns, $col;
>>>    }
>>>
>>> @columns = sort { $a<=>  $b } @columns;
>>
>>
>> suppose there are duplications in the @columns, the data much more like:
>>
>> 0.35 1.32 3
>> 0.35 4.35 2
>> 0.36 0.36 1
>> 0.36 1.32 1
>> 0.36 1.45 1
>> 0.36 1.46 1
>>
>> How can I remove the duplications, uniq them?
>
>
>
> $ echo "0.35 1.32 3
>
> 0.35 4.35 2
> 0.36 0.36 1
> 0.36 1.32 1
> 0.36 1.45 1
> 0.36 1.46 1" | perl -e'
>
> my ( %columns, %data );
> while ( <> ) {
>    my ( $row, $col, $val ) = split;
>    $data{ $row }{ $col } = $val;
>    $columns{ $col } = 1;

This is smart.

But the output is weird for the real file (see the below link), not
the sample file.

https://docs.google.com/open?id=0B_oe_t9o_2c3eFZsQ1NYMjJwZGc

Thanks,

>    }
>
> my @columns = sort { $a <=> $b } keys %columns;
>
>
> print "     @columns\n";
> for my $row ( sort { $a <=> $b } keys %data ) {
>    print join( " ", $row, map $_ ? "   $_" : "   0", @{ $data{ $row } }{
> @columns } ), "\n";
>    }
> '
>     0.36 1.32 1.45 1.46 4.35
> 0.35    0    3    0    0    2
>
> 0.36    1    1    1    1    0
>
>
>
> John
> --
> Any intelligent fool can make things bigger and
> more complex... It takes a touch of genius -
> and a lot of courage to move in the opposite
> direction.                   -- Albert Einstein
>
> --
> To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> For additional commands, e-mail: beginners-h...@perl.org
> http://learn.perl.org/
>
>

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to