column to matrix


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting column to matrix
# 1  
Old 09-18-2012
column to matrix

Hello All,

I need your help in the following problem. I have a matrix of 500 columns and 1000 rows and in each cell, it is having a value range from 0 to 9. I would like to convert each column in to a matrix, according to the value in each cell (ie) 0 to 9.

For each column, I need a matrix of 1000 rows with 10 columns (0 to 9). When i looked into this forum, I got the following code:

Code:
nawk '{a[$1,$2]++;r[$1];c[$2]}END {for(ci in c) printf OFS ci;print "";for (ri in r) {printf ri; for (ci in c) {idx=ri SUBSEP ci;printf OFS ((idx in a)?a[idx]:0)}print ""}}' OFS='\t' myFile

But the above mentioned code is not giving the rows from 1 to 1000 and columns 0 to 9. Something mixed up. Smilie

If anyone help me in this regard. Your replies are highly appreciated.

Warm regards
Fredrick.

---------- Post updated at 03:47 PM ---------- Previous update was at 03:45 PM ----------

Here is the code again:

Code:
nawk '{a[$1,$2]++;r[$1];c[$2]}END {for(ci in c) printf OFS ci;print  "";for (ri in r) {printf ri; for (ci in c) {idx=ri SUBSEP ci;printf OFS  ((idx in a)?a[idx]:0)}print ""}}' OFS='\t' myFile > myFileout


Last edited by Franklin52; 09-18-2012 at 11:07 AM.. Reason: Corrected code tags
# 2  
Old 09-18-2012
What immediately caught my eye is the missing format specifier for the printf statements. Also, from your description, I reckon NF will be 500 for each line, but your code only uses $1 and $2. So, pls post - at least a portion of - your input file and a few of the 500 output files.
# 3  
Old 09-18-2012
Hi Rudi,

Thanks for your reply. I just tried with only two columns (for testing). here is the input:

Code:
 
    1  2
     2  3
     3  3
     4  3
     5  3
     6  3
     7  2
     8  3
     9  3
    10  3
    11  2
    12  2
    13  3
    14  2
    15  2
    16  2
    17  2
    18  2
    19  2
    20  2
    21  2
    22  2
    23  7
    24  2
    25  3
    26  3
    27  2
    28  2
    29  2
    30  2
    31  2
    32  2
    33  3
    34  2

and I got the following output

Code:
        4       5       6       7       8       9       0       1       2       3
780     0       0       0       0       0       1       0       0       0       0
781     0       0       0       0       0       0       0       1       0       0
740     0       0       0       0       0       0       0       1       0       0
782     0       0       0       0       0       0       0       1       0       0
741     0       0       0       0       0       0       0       0       0       1
700     0       0       0       0       0       0       0       1       0       0
80      0       0       0       0       0       0       0       0       1       0
783     0       0       0       0       0       1       0       0       0       0
742     0       0       0       0       0       0       0       0       0       1
701     0       0       0       0       0       1       0       0       0       0
81      0       0       0       0       0       0       0       0       1       0
40      0       0       0       0       0       0       0       0       0       1
784     0       0       0       0       0       0       0       1       0       0
743     0       0       0       0       0       0       0       1       0       0
702     0       0       0       0       0       0       0       0       0       1
82      0       0       0       0       0       0       0       0       1       0
41      0       0       0       0       0       0       0       0       0       1
785     0       0       0       0       0       1       0       0       0       0

In the output, row numbers are not in an order, as well as column numbers.

Warm regards
Fredrick.

Warm regards
Fredrick.

Last edited by Franklin52; 09-18-2012 at 11:18 AM.. Reason: fixed code tags
# 4  
Old 09-18-2012
Hey, you said cells have values 0 - 9. This is not what I see in your input's first column. And, pls provide desired output, not broken output from broken code.
# 5  
Old 09-18-2012
Hi Rudi,

Thanks for the reply, since my input is having 1000 rows, i pasted only first few lines.

-Fredrick.
# 6  
Old 09-19-2012
Pls explain your input file. I read it in a way that col 1 is sth. like a row no., and col 2 has data in it, mostly 2s and 3s, with one 7 in between. The output you show has absolutely nothing to do with this input file. Pls provide the desired output from that input file. I'd guess sth like
Code:
0 1 2 3 4 5 6 7 8 9
0 0 1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
...
0 0 0 0 0 0 0 1 0 0

and so on. Pls confirm or present different example.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Transpose matrix based on second column using awk

Hi, Is it possible to transpose the matrix like this using awk ? Many thanks in advance Input abc Name_1 0 abc Name_2 1 abc Name_3 2 abc Name_4 0.4 def Name_1 0 def Name_2 9 def Name_3 78 def Name_4 1 Output abc def Name_1 0 ... (4 Replies)
Discussion started by: quincyjones
4 Replies

2. Shell Programming and Scripting

Convert a 3 column tab delimited file to a matrix

Hi all, I have a 3 columns input file like this: CPLX9PC-4943 CPLX9PC-4943 1 CPLX9PC-4943 CpxID123 0 CPLX9PC-4943 CpxID126 0 CPLX9PC-4943 CPLX9PC-5763 0.5 CPLX9PC-4943 CpxID13 0 CPLX9PC-4943 CPLX9PC-6163 0 CPLX9PC-4943 CPLX9PC-6164 0.04... (7 Replies)
Discussion started by: AshwaniSharma09
7 Replies

3. Shell Programming and Scripting

Perl- creating a matrix from a 3 column file

Dear all, I'm new in perl scripting and I'm trying to creating a matrix from a 3 column file sorting data in a particular manner. In the final matrix I need to have the first column "IDs" on the header of the columns and the second column values on the header of each row. And the value fo the... (2 Replies)
Discussion started by: gabrysfe
2 Replies

4. Shell Programming and Scripting

Adding or substracting from a Matrix column

Hello! I'm new to linux programming. It would be great if you could help me out. I have a matrix of kind: 10 30.0 20 190.5 40 180. 50 320.5 I would like to substract 180 from column 2 If the value is >180 to add 180 for column 2 If the value is <180 nothing if it is equal to... (3 Replies)
Discussion started by: lovelinux
3 Replies

5. Shell Programming and Scripting

3 column .csv --> correlation matrix; awk, perl?

Greetings, salutations. I have a 3 column csv file with ~13 million rows and I would like to generate a correlation matrix. Interestingly, you all previously provided a solution to the inverse of this problem. Thread title: "awk? adjacency matrix to adjacency list / correlation matrix to list"... (6 Replies)
Discussion started by: R3353
6 Replies

6. Ubuntu

How to convert full data matrix to linearised left data matrix?

Hi all, Is there a way to convert full data matrix to linearised left data matrix? e.g full data matrix Bh1 Bh2 Bh3 Bh4 Bh5 Bh6 Bh7 Bh1 0 0.241058 0.236129 0.244397 0.237479 0.240767 0.245245 Bh2 0.241058 0 0.240594 0.241931 0.241975 ... (8 Replies)
Discussion started by: evoll
8 Replies

7. Shell Programming and Scripting

Extracting columns from a matrix and storing each column in a separate file

Hi All, I have a huge matrix file consisting some some millions rows and 6000 columns. The contents are just floating point numbers in the matrix. I want to extract each column (i.e. 6000 of them) and store each column in a separate file. For example, 1.dat will consist of elements from column... (4 Replies)
Discussion started by: shoaibjameel123
4 Replies

8. Shell Programming and Scripting

two-column data to matrix in AWK

Howdy, I need to convert an association data matrix, currently in a two-column format, into a matrix with numbers indicating the number of associations. I've been looking around for AWK code in the list, but could not find anything. Here's an example of what I want to perform: original... (10 Replies)
Discussion started by: sramirez
10 Replies

9. Shell Programming and Scripting

diagonal matrix to square matrix

Hello, all! I am struggling with a short script to read a diagonal matrix for later retrieval. 1.000 0.234 0.435 0.123 0.012 0.102 0.325 0.412 0.087 0.098 1.000 0.111 0.412 0.115 0.058 0.091 0.190 0.045 0.058 1.000 0.205 0.542 0.335 0.054 0.117 0.203 0.125 1.000 0.587 0.159 0.357... (11 Replies)
Discussion started by: yifangt
11 Replies

10. Shell Programming and Scripting

processing matrix column wise

I have a m X n matrix written out to file, say like this: 1,2,3,4,5,6 2,6,3,10,34,67 1,45,6,7,8,8 I want to calculate the column averages in the MINIMUM amount of code or processing possible. I would have liked to use my favorite tool, "AWK" but since it processes rowwise, getting the... (5 Replies)
Discussion started by: Abhishek Ghose
5 Replies
Login or Register to Ask a Question