Help - Search - Members - Calendar
Full Version: (G)AWK Script for frequency count and ratio calculation
Linuxhelp > Support > Programming in Linux
Hello all,

I am trying to reproduce a graph given in that is Figure 1. Using the titanic data:, I was able to get frequency counts for each combination; however, I am unable to get the ratio for particular cases.

If you look at the titanic data, the data are laid like these:
status, age, sex, survived

I was able to get the counts for all the unique combinations for all the cases; however, I want to get the ratio of 1st class survived to 1st class did not survive. In the given example, that ratio would be 2/1 = 2.

Here's the code that I have written so far to make it generic for any dataset and any variable value (in this case it is "yes" survived):
#!/usr/bin/gawk -f
FS = OFS = ",";
Fields = 4;
Flds2use = 1;
#PredVar = 4;
ClassVal = "yes";

### patterns1: skip blanks and comments
{sub(/\%.*/,"")} ;
/^[ \t]*$/ {next};
/@/ {next};


# /("[^"]*")|('[^\r]*)(\r\n)?/

{ #Records++;
for (i = 1; i <= NF-1; i++)

for (class in Last)
if (class != ClassVal) sum+=Last[class];
#for (f in freq)

#print UnCondProb;
for (word in freq) {
#print word, freq[word]
print ( word ~ ClassVal)
if ( word ~ ClassVal) {
print word, freq[word]
print Num[word]}
else {
for (class in Last)
Denom[word]= freq[word]}

print word, Num[word],Denom[word],Num[word]/Denom[word]

I have posted this at Odesk, if someone wants to make some quick money, he or she can complete this project at Odesk:

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2018 Invision Power Services, Inc.