bala06
November 29, 2012, 11:23am
1
Dear All
I would like to convert columns to matrix
For example my data looks like this
D2 0 D2 0 1.0
D2 0 D2 1 0.308
D2 0 D2 2 0.554
D2 0 D2 3 0.287
D2 0 D2 4 0.633
D2 0 D2 5 0.341
D2 0 D2 6 0.665
D2 0 D2 7 0.698
D2 0 D2 8 0.625
D2 0 D2 9 0.429
D2 0 D2 10 0.698
D2 0 D2 11 0.686
D2 0 D2 12 0.314
D2 0 D2 13 0.523
D2 0 D2 14 0.315
D2 0 D2 15 0.269
D2 0 D2 16 0.536
D2 0 D2 17 0.611
D2 0 D2 18 0.273
D2 0 D2 19 0.567
D2 0 D2 20 0.354
D2 0 D2 21 0.701
D2 0 D2 22 0.659
D2 0 D2 23 0.256
D2 0 D2 24 0.621
D2 0 D2 25 0.488
D2 0 D2 26 0.33
D2 0 D2 27 0.613
D2 0 D2 28 0.637
D2 0 D2 29 0.442
D2 0 D2 30 0.282
D2 1 D2 0 0.286
D2 1 D2 1 1.0
D2 1 D2 2 0.448
D2 1 D2 3 0.405
D2 1 D2 4 0.445
D2 1 D2 5 0.399
D2 1 D2 6 0.443
D2 1 D2 7 0.429
D2 1 D2 8 0.502
D2 1 D2 9 0.498
D2 1 D2 10 0.333
D2 1 D2 11 0.274
D2 1 D2 12 0.459
D2 1 D2 13 0.54
D2 1 D2 14 0.44
D2 1 D2 15 0.386
D2 1 D2 16 0.372
D2 1 D2 17 0.476
D2 1 D2 18 0.48
D2 1 D2 19 0.617
D2 1 D2 20 0.623
D2 1 D2 21 0.326
D2 1 D2 22 0.443
D2 1 D2 23 0.349
D2 1 D2 24 0.421
D2 1 D2 25 0.522
D2 1 D2 26 0.411
D2 1 D2 27 0.448
D2 1 D2 28 0.349
D2 1 D2 29 0.451
D2 1 D2 30 0.581
I would like to transform data to
D2 0 D2 0 1.0 D2 1 0.308 D2 2 0.554
something like this.
Is it possible todo using awk.
Kindly advice.
Many Thanks
Balaji
Please use the forum's Search to find similar threads or the bottom of this thread for the similarly named threads.
rdrtx1
November 29, 2012, 1:32pm
3
Not sure what "something like this" is exactly. Try:
awk '!a[$1,$2]++ && NR>1 {print ""} {printf $0}END{print ""}' input
bala06
November 30, 2012, 9:02am
4
Dear Programmers
I have simplified the data such that it look like as shown below.
I want convert xy data as matrix.
0 1
0 0.308
0 0.554
0 0.287
0 0.633
0 0.341
0 0.665
0 0.698
0 0.625
0 0.429
0 0.698
0 0.686
0 0.314
0 0.523
0 0.315
0 0.269
0 0.536
0 0.611
0 0.273
0 0.567
0 0.354
0 0.701
0 0.659
0 0.256
0 0.621
0 0.488
0 0.33
0 0.613
0 0.637
0 0.442
0 0.282
1 0.286
1 1
1 0.448
1 0.405
1 0.445
1 0.399
1 0.443
1 0.429
1 0.502
1 0.498
1 0.333
1 0.274
1 0.459
1 0.54
1 0.44
1 0.386
1 0.372
1 0.476
1 0.48
1 0.617
1 0.623
1 0.326
1 0.443
1 0.349
1 0.421
1 0.522
1 0.411
1 0.448
1 0.349
1 0.451
1 0.581
Could you please help me.
I tried the awk script its exactly not converting as matrix.
Kindly advice.
Many Thanks
Balaji
rdrtx1:
Not sure what "something like this" is exactly. Try:
awk '!a[$1,$2]++ && NR>1 {print ""} {printf $0}END{print ""}' input
Have you tried to search the forums for the similar threads?
This subject has been covered numerous times...
bala06
November 30, 2012, 9:30am
6
Hi
I checked the forums and tried for my data its not working and not generating matrix.
could you please kindly help.
Many Thanks
Balaji
What exactly have you tried?
Given your latest 'simplified data', what's the desired output?
"something like this" usually isn't good enough to help us help you.
Please use code tags when posting code/data samples.
bala06
November 30, 2012, 10:29am
8
Hi vgresh
Sorry for confusion.
My data is in such format
D2cls0 D2cls0 1
D2cls0 D2cls1 0.308
D2cls0 D2cls2 0.554
D2cls0 D2cls3 0.287
D2cls0 D2cls4 0.633
D2cls0 D2cls5 0.341
D2cls0 D2cls6 0.665
D2cls0 D2cls7 0.698
D2cls0 D2cls8 0.625
D2cls0 D2cls9 0.429
I would like to transform to
D2cls0 D2cls1 D2cls2 D2cls3 D2cls4 D2cls5 D2cls6 D2cls7 D2cls8 D2cls9
D2cls0 1 0.308 0.554 0.287 0.633 0.341 0.665 0.698 0.625 0.429
I tried code from this link:
awk '{f1[$3]++;f2[$2]++;a[$3"^"$2]++;}END{ORS="";print " ";for(j in f2){print j" ";c++;if(c>5){print " ";}}print "\n";for(i in f1){print i;for(k in f2){l=i"^"k;if(a[l] == ""){print " ";}else{print " "a[l]" ";}}print "\n";}}' file
But it didnt give the output as i'm expected.
Kindly advice.
Many Thanks
Balaji
---------- Post updated at 03:29 PM ---------- Previous update was at 03:02 PM ----------
Dear All
could you please advice me how can i get the data as above matrix.
Many Thanks
balaji
bala06:
Hi vgresh
Sorry for confusion.
My data is in such format
D2cls0 D2cls0 1
D2cls0 D2cls1 0.308
D2cls0 D2cls2 0.554
D2cls0 D2cls3 0.287
D2cls0 D2cls4 0.633
D2cls0 D2cls5 0.341
D2cls0 D2cls6 0.665
D2cls0 D2cls7 0.698
D2cls0 D2cls8 0.625
D2cls0 D2cls9 0.429
I would like to transform to
D2cls0 D2cls1 D2cls2 D2cls3 D2cls4 D2cls5 D2cls6 D2cls7 D2cls8 D2cls9
D2cls0 1 0.308 0.554 0.287 0.633 0.341 0.665 0.698 0.625 0.429
I tried code from this link:
convert data into matrix- awk
awk '{f1[$3]++;f2[$2]++;a[$3"^"$2]++;}END{ORS="";print " ";for(j in f2){print j" ";c++;if(c>5){print " ";}}print "\n";for(i in f1){print i;for(k in f2){l=i"^"k;if(a[l] == ""){print " ";}else{print " "a[l]" ";}}print "\n";}}' file
But it didnt give the output as i'm expected.
Kindly advice.
Many Thanks
Balaji