Ranking data points from multiple files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Ranking data points from multiple files
# 15  
Old 06-21-2016
Thank you! That finally explains it.

I'm guessing the 27.46 is a typo then?
# 16  
Old 06-21-2016
Quote:
Originally Posted by Corona688
Why isn't 24.5625 -81.7708 27.16 chosen from the original input file?
Sorry, that output should be 24.5625 -81.7708 27.16 1
not
24.5625 -81.7708 27.46 1
This User Gave Thanks to ncwxpanther For This Post:
# 17  
Old 06-21-2016
You can sort everything by value and just let awk decide which belongs to which:
Code:
REF="test/190005.pnt"

sort -k3 -n test/{1900..2016}05.pnt |
        awk '
        # Read the values you want to rank from the first file
        # This trick works by NR and FNR only being the same while reading
        # the first file, not the second.
        NR==FNR {  A[$1,$2]=$3 ; next }
        # Read everything sorted by value, counting order per prefix
        # as it goes.  When a matching value is found, print its order.
        ++C[$1,$2] && A[$1,$2] == $3 { print $1, $2, C[$1,$2] }
' $REF -

This User Gave Thanks to Corona688 For This Post:
# 18  
Old 06-22-2016
Thanks Corona. The scripts works as expected.

However there is an added intricacy that I need help with.

For ties - I need the script to rank that tied value the same.

For instance, If there is a rank of 1, 2, 3 but 4, 5, and 6 are tied. The ranks would be 1, 2, 3, 4, 4, 4, 7,....

To add to the complexity, I need to rank at both tails of the range. That way if the tie is on the upper half of the ranks, it would assume the higher value.

For instance, if there is a rank of 100, 99, 98, but 97 and 96 are tied. The ranks would be 100, 99, 98, 97, 97, 95,.....

In order to do this the total number of ranks would need to be divided by 2 to find the midpoint. Any ties less than the midpoint would assume the lower rank. While any ties more than the midpoint would assume the higher rank.

The total number of ranks could be found in the number of files in the sort statement - In this case it would be
Code:
({1900..2016} + 1) / 2 = 59

Is this something that can be done in awk?
# 19  
Old 06-22-2016
So you want it to trawl through all the ties and pick the "tie" which has the most repeated values in common?
# 20  
Old 06-22-2016
The output that I currently have is great, I just need to add a layer of complexity to it. In that I need all the ties to be ranked as a tie.

This snipit does just that
Code:
awk '$3 != prev { rank = NR }{ print $0, "   "rank; prev = $3 }'

However, what I also need the script to do is to rank both ends of the values.

For instance

Code:
VALUE  |    RANK
100           1
200           2
200           2
300           4
400           5
500           6
600           8
600           8
700           9
800          10

Notice how the ties in the top half (100-400) default to the lower rank, while the ties in the bottom half (500-800) default to the higher rank.
# 21  
Old 06-22-2016
What if changing one tie breaks another? Which wins?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

In PErl script: need to read the data one file and generate multiple files based on the data

We have the data looks like below in a log file. I want to generat files based on the string between two hash(#) symbol like below Source: #ext1#test1.tale2 drop #ext1#test11.tale21 drop #ext1#test123.tale21 drop #ext2#test1.tale21 drop #ext2#test12.tale21 drop #ext3#test11.tale21 drop... (5 Replies)
Discussion started by: Sanjeev G
5 Replies

2. UNIX for Dummies Questions & Answers

Stack data from multiple files into one, with variable column files

Hello Gurus, Im new to scripting. Got struck with a file merge issue in Unix. Was looking for some direction and stumbled upon this site. I saw many great posts and replies but couldnt find a solution to my issue. Greatly appreciate any help.. I have three csv files -> Apex_10_Latest.csv,... (1 Reply)
Discussion started by: wamshi
1 Replies

3. Shell Programming and Scripting

Grabbing data between 2 points in text file

I have a text file that shows the output of my solar inverters. I want to separate this into sections. overview , device 1 , device 2 , device 3. Each device has different number of lines. but they all have unique starting points. Overview starts with 6 #'s, Devices have 4#'s and their data starts... (6 Replies)
Discussion started by: Mikey
6 Replies

4. UNIX for Dummies Questions & Answers

Finding data value that contains x% of points

Hi, I need help on finding the value of my data that encompasses certain percentage of my total data points (n). Attached is an example of my data, n=30. What I want to do is for instance is find the minimum threshold that still encompasses 60% (n=18), 70% (n=21) and 80% (n=24). manually to... (4 Replies)
Discussion started by: ida1215
4 Replies

5. UNIX for Dummies Questions & Answers

Using AWK: Extract data from multiple files and output to multiple new files

Hi, I'd like to process multiple files. For example: file1.txt file2.txt file3.txt Each file contains several lines of data. I want to extract a piece of data and output it to a new file. file1.txt ----> newfile1.txt file2.txt ----> newfile2.txt file3.txt ----> newfile3.txt Here is... (3 Replies)
Discussion started by: Liverpaul09
3 Replies

6. Programming

GNUPLOT- how to change the style of data points

Hi, I am trying to arrange my graphs with GNUPLOT. Although it looked like simple at the beginning, I could not figure out an answer for the following: I want to change the style of my data points (not the line, just exact data points) The terminal assigns first + and then x to them but what I... (0 Replies)
Discussion started by: natasha
0 Replies

7. UNIX for Dummies Questions & Answers

How to get data only inside polygon created by points which is part of whole data from file?

hiii, Help me out..i have a huge set of data stored in a file.This file has has 2 columns which is latitude & longitude of a region. Now i have a program which asks for the number of points & based on this number it asks the user to enter that latitude & longitude values which are in the same... (7 Replies)
Discussion started by: reva
7 Replies

8. Shell Programming and Scripting

Group search (multiple data points) in Linux

Hi All I have a data set like this tab delimited: weft fgr-1 345 -1 fgrythdgd weft fgr-3 456 -2 ghjdklflllff weft fgr-11 456 -3 ghtjuffl weft fgr-1 213 -2 ghtyjdkl weft fgr-34 567 -5 fghytkflf frgt fgr-36 567 -1 ghrjufjf frgt fgr-45 678 -2 ghjruir frgt fgr-34 546 -5 gjjjgkldlld frgt... (4 Replies)
Discussion started by: Lucky Ali
4 Replies

9. Shell Programming and Scripting

recoding data points using SED??

Hello all, I have a data file that needs some serious work...I have no idea how to implement the changes that are needed! The file is a genotypic file with >64,000 columns representing genetic markers, a header line, and >1100 rows that looks like this: ID 1 2 3 4 ... (7 Replies)
Discussion started by: doobedoo
7 Replies

10. Shell Programming and Scripting

to extarct data points

suppose u have a file which consist of many data points separated by asterisk Question is to extract third part in each line . 0.0002*0.003*-0.93939*0.0202*0.322*0.3332*0.2222*0.22020 0.003*0.3333*0.33322*-0.2220*0.3030*0.2222*0.3331*-0.3030 0.0393*0.3039*-0.03038*0.033*0.4033*0.30384*0.4048... (5 Replies)
Discussion started by: cdfd123
5 Replies
Login or Register to Ask a Question