[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-bash] transpose
From: |
Pierre Gaston |
Subject: |
Re: [Help-bash] transpose |
Date: |
Thu, 26 May 2016 09:33:09 +0300 |
something like this should do it:
awk '{if ($2==1) { one[$1]+=1;zero[$1]+=0} else {zero[$1]+=1;one[$1]+=0}}
END {for (k in zero){ print k, zero[k], one[k]}}'
the zero[$1]+=0 and one[$1]+=0 are just to make sure the array are
initialized for both values, there are probably more elegant or idiomatic
solutions but hopefully it's clear enough
On Thu, May 26, 2016 at 3:56 AM, Val Krem <address@hidden> wrote:
> Hi all,
>
> I am reading a file with >5M records and with about 15 fields (variables).
>
> I am interested in two of the fields (ID and Flag) and then two fields
> look like the following. The first field (ID) is alpha-numeric and the
> second field is numeric 0 or 1. My goal is to count the number of 0's and
> 1's by unique ID
>
>
> A123 0
> A123 0
> A123 0
> A123 1
> A123 1
> A123 1
> A123 0
> A123 0
> A123 0
> A123 0
> A123 1
> A123 0
> A123 0
> A124 0
> A124 0
> A124 1
> A124 1
> A124 1
> A124 1
> A124 0
> A124 1
> A124 0
> A124 0
> A124 1
> A124 0
> A124 1
> A124 0
> A124 0
> A125 0
> A125 0
> A125 1
> A125 1
> A125 1
> A125 1
> A125 0
> A125 0
> A125 0
> A125 0
> A125 0
> A125 0
> A125 1
> A125 0
>
> awk '{print $1, $2}' file1 |sort |uniq -c
> and got this
>
>
> 9 A123 0
> 4 A123 1
> 8 A124 0
> 7 A124 1
> 9 A125 0
> 5 A125 1
>
> Now I want the result to be transposed like this or the
>
> desired output,
>
> A123 9 4
> A124 8 7
> A125 9 5
>
> I would appreciate if you help me out to get the desired result
>
>
> thank you in advance
>
>