How to transpose a table of data using awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to transpose a table of data using awk
# 1  
Old 07-28-2008
How to transpose a table of data using awk

Hi.

I have this data below:-
v1 28 14 1.72414 1.72414 1.72414 1.72414 1.72414
v2 77 7 7.47126 6.89655 6.89655 6.89655 6.89655
v3 156 3 21.2644 21.2644 20.6897 21.2644 20.6897
v4 39 3 1.72414 1.72414 1.72414 1.72414 1.72414
v5 155 1 21.2644 23.5632 24.1379 23.5632 24.1379
v6 62 2 2.87356 4.02299 4.02299 2.87356 4.02299
v7 152 4 20.6897 20.6897 20.6897 20.6897 20.6897
v8 154 1 22.4138 22.4138 22.4138 22.4138 22.4138

and I wanted to transpose them to be:-

v1 v2 ..........v8
28 77
14 .7
1.72414 7.47126
1.72414 6.89655
1.72414 6.89655
1.72414 6.89655

Please advise. Thanks
# 2  
Old 07-28-2008
Taken from the GNU AWK handbook:

{
if (max_nf < NF)
max_nf = NF
max_nr = NR
for (x = 1; x <= NF; x++)
vector[x, NR] = $x
}

END {
for (x = 1; x <= max_nf; x++) {
for (y = max_nr; y >= 1; --y)
printf("%s ", vector[x, y])
printf("\n")
}
}

Copy that to a file, then invoke it like this:

awk -f scriptfile datafile | awk '{ print $8"\t" $7"\t" $6"\t" $5"\t" $4"\t" $3"\t" $2"\t" $1"\t" }'
# 3  
Old 07-29-2008
A perl script to transpose a metrix, hope it can address your issue.

Code:
$file=shift;
open(FH,"<$file") or die "can not open file";
while(<FH>){
        $_=~ tr/\n//d;
        @arr=split(",",$_);
        $col=$#arr;
        for($i=0;$i<=$#arr;$i++){
                $index=sprintf("%s%s",$.,$i);
                $hash{$index}=$arr[$i];
        }
        $row=$.;
}
close(FH);
for($a=0;$a<=$col;$a++){
        for($b=1;$b<=$row;$b++){
                $t=sprintf("%s%s",$b,$a);
                print $hash{$t},",";
        }
        print "\n";
}

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Transpose table with awk

I am trying to format the table below to the output input: cand week sub1 sub2 sub3 sub4 joe 1 94.19 70.99 43.93 60.14 joe 2 94.07 51.02 41.07 38.92 joe 3 26.24 30.95 44.56 67.67 joe 4 72.36 60.92 40.78 83.25 joe 5 51 70.01 44.66 82.22... (7 Replies)
Discussion started by: aydj
7 Replies

2. UNIX for Beginners Questions & Answers

Transpose large data in UNIX

Hi I have the following sample of data: my full data dimention is 900,000* 1119 rs987435 C G 1 1 1 0 2 rs345783 C G 0 0 1 0 0 rs955894 G T 1 1 2 2 1 rs6088791 ... (7 Replies)
Discussion started by: marwah
7 Replies

3. UNIX for Beginners Questions & Answers

Transpose the data

Hi All, I have sort of a case to transpose data from rows to column input data Afghanistan|10000|1 Albania|25000|4 Algeria|25000|7 Andorra|10000|4 Angola|25000|47 Antigua and Barbuda|25000|23 Argentina|5000|3 Armenia|100000|12 Aruba|20000|2 Australia|50000|2 I need to transpose... (3 Replies)
Discussion started by: radius
3 Replies

4. UNIX for Advanced & Expert Users

Transpose Messy Data

I have a messy, pipe-delimited ("|") input dataset. I would like to create a file of ID plus each component of field 4 which is delimited by ";" into a long, skinny shape for easier processing. A couple of complications are that field 4 may contain both commas and linefeed characters from the... (9 Replies)
Discussion started by: 91674io
9 Replies

5. Shell Programming and Scripting

Help with transpose data content

Hi, Below is my input file: c116_g1_i1 -,-,-,+ c118_g2_i1 +,+ c118_g3_i1 + c120_g1_i1 +,+,+,+ . . Desired Output File c116_g1_i1 - c116_g1_i1 - c116_g1_i1 - c116_g1_i1 + c118_g2_i1 + c118_g2_i1 + (3 Replies)
Discussion started by: perl_beginner
3 Replies

6. Shell Programming and Scripting

Transpose data as rows using awk

Hi I have below requirement, need help One file contains the meta data information and other file would have the data, match the column from file1 and with file2 and extract corresponding column value and display in another file File1: CUSTTYPECD COSTCENTER FNAME LNAME SERVICELVL ... (1 Reply)
Discussion started by: ravlapo
1 Replies

7. Shell Programming and Scripting

Transpose Column of Data to Rows

I can no longer find my commands, but I use to be able to transpose data with common fields from a single column to rows using a command line. My data is separated as follows: NAME=BOB ADDRESS=COLORADO PET=CAT NAME=SUSAN ADDRESS=TEXAS PET=BIRD NAME=TOM ADDRESS=UTAH PET=DOG I would... (7 Replies)
Discussion started by: docdave78
7 Replies

8. Shell Programming and Scripting

Transpose Data from Columns to rows

Hello. very new to shell scripting and would like to know if anyone could help me. I have data thats being pulled into a txt file and currently have to manually transpose the data which is taking a long time to do. here is what the data looks like. Server1 -- Date -- Other -- value... (7 Replies)
Discussion started by: Mikes88
7 Replies

9. Shell Programming and Scripting

Transpose data from columns to lines for each event

Hi everyone, Maybe somebody could help me with this. I have a text file showing in 2 columns registers of services used by customers in a comercial place. The register for the use of any particular service begins with "EVENT" in column 1. I would like to transpose the info for each... (20 Replies)
Discussion started by: cgkmal
20 Replies

10. Shell Programming and Scripting

How to transpose data elements in awk

Hi, I have an input data file :- Test4599,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,Rain Test90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,Not Rain etc.... I wanted to transpose these data to:-... (2 Replies)
Discussion started by: ahjiefreak
2 Replies
Login or Register to Ask a Question