Cross tabulations are statistical reports where you de-normalize your data and show results grouped by one field, having one column for each distinct value of a second field.
This cross tabulations are usualy made using SQL language into dababase engine, but I want to fix it using a simple awk script to perform this crosstab analysis.
The Basic problem definition is :
starting from a list of values, we want to group them by field A and create a column for each distinct value of field B:
tag;gsm;count
AAAAAAAAAA;GSM31945;6
AAAAAAAAAA;GSM3240;6
AAAAAACCCA;GSM3242;6
AAAAAAAGCA;GSM3243;6
AAAAAATACA;GSM41375;1
AAAAAATTTA;GSM41375;1
AAAAACACTC;GSM41378;1
AAAAACAGAA;GSM41375;1
AAAAAAAAGG;GSM41376;9
AAAAAAACAA;GSM41376;1
AAAAAAGAAC;GSM41376;1
AAAAAAGCAG;GSM41376;1
AAAAAATTAT;GSM41376;1
AAAAAATTTA;GSM676;6
the desired result is a table with one column for field A, several columns for each value of field B:
tag;GSM31945;GSM3240;GSM3242;GSM3243;GSM41375;GSM41376;GSM41378;GSM676
AAAAAAAAAA;6;6;0;0;0;0;0;0
AAAAAAAAGG;0;0;0;0;0;9;0;0
AAAAAAACAA;0;0;0;0;0;1;0;0
AAAAAAAGCA;0;0;0;6;0;0;0;0
AAAAAACCCA;0;0;6;0;0;0;0;0
AAAAAAGAAC;0;0;0;0;0;1;0;0
AAAAAAGCAG;0;0;0;0;0;1;0;0
AAAAAATACA;0;0;0;0;1;0;0;0
AAAAAATTAT;0;0;0;0;0;1;0;0
AAAAAATTTA;0;0;0;0;1;0;0;6
AAAAACACTC;0;0;0;0;0;0;1;0
AAAAACAGAA;0;0;0;0;1;0;0;0
I try to use statements for scanning a "multi-dimensional" array in awk and I have some troubles in performing that, so I need somebody help to. Maybe you have already coded a piece of code to resolve this problem or some ideas. Please, tell me.
Regards,
Laurent --
This cross tabulations are usualy made using SQL language into dababase engine, but I want to fix it using a simple awk script to perform this crosstab analysis.
The Basic problem definition is :
starting from a list of values, we want to group them by field A and create a column for each distinct value of field B:
tag;gsm;count
AAAAAAAAAA;GSM31945;6
AAAAAAAAAA;GSM3240;6
AAAAAACCCA;GSM3242;6
AAAAAAAGCA;GSM3243;6
AAAAAATACA;GSM41375;1
AAAAAATTTA;GSM41375;1
AAAAACACTC;GSM41378;1
AAAAACAGAA;GSM41375;1
AAAAAAAAGG;GSM41376;9
AAAAAAACAA;GSM41376;1
AAAAAAGAAC;GSM41376;1
AAAAAAGCAG;GSM41376;1
AAAAAATTAT;GSM41376;1
AAAAAATTTA;GSM676;6
the desired result is a table with one column for field A, several columns for each value of field B:
tag;GSM31945;GSM3240;GSM3242;GSM3243;GSM41375;GSM41376;GSM41378;GSM676
AAAAAAAAAA;6;6;0;0;0;0;0;0
AAAAAAAAGG;0;0;0;0;0;9;0;0
AAAAAAACAA;0;0;0;0;0;1;0;0
AAAAAAAGCA;0;0;0;6;0;0;0;0
AAAAAACCCA;0;0;6;0;0;0;0;0
AAAAAAGAAC;0;0;0;0;0;1;0;0
AAAAAAGCAG;0;0;0;0;0;1;0;0
AAAAAATACA;0;0;0;0;1;0;0;0
AAAAAATTAT;0;0;0;0;0;1;0;0
AAAAAATTTA;0;0;0;0;1;0;0;6
AAAAACACTC;0;0;0;0;0;0;1;0
AAAAACAGAA;0;0;0;0;1;0;0;0
I try to use statements for scanning a "multi-dimensional" array in awk and I have some troubles in performing that, so I need somebody help to. Maybe you have already coded a piece of code to resolve this problem or some ideas. Please, tell me.
Regards,
Laurent --