• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 318
  • Last Modified:

average data in third column per month and round to the nearest hundredth

I have a file called output.txt and I want to average data per month. The original attached file should create month in the first column average value in the second column. Each row should look like this below. The averages are bogus just for example. See attached file.

output2.txt sample file rows with bogus data.
198001 120.22
198002 133.42
output.txt
0
libertyforall2
Asked:
libertyforall2
  • 2
1 Solution
 
bazikaCommented:
Could You please clarify the stucture of Your input file (which is called "output.txt")?

Sometimes there are 4 columns there, and later columns have 5 columns. Which exactly fields should be analyzed?
0
 
bazikaCommented:
Here is the example of shell script.
I suppose, that the first field in output.txt is "YYYYMMDD", so selecting "substr($1, 1, 6 )" gives us "YYYYMM" (year+month).

Also, the summary of all fields from the 3-rd is taken (i.e. field3+field4+field5 ...)

I do not know, which awk version is used, therefor, I do additional initialization of the arrays.

#!/bin/ksh

cat output.txt | awk '
$3 != "" { cur_mon = substr($1, 1, 6 ) ;
        if( a_sum[cur_mon] == "" ) { a_sum[cur_mon] = 0 ; a_cou[cur_mon]  = 0 }
        for(i=3;i<=NF;i++) {
                a_sum[cur_mon] += $i;
                a_cou[cur_mon] ++ ;
        }
}
END {
        for (cur_mon in a_sum )
                { printf "%s %.2f\n", cur_mon, a_sum[cur_mon]/a_cou[cur_mon] ; }
        }
' | sort -k 1

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Introducing Cloud Class® training courses

Tech changes fast. You can learn faster. That’s why we’re bringing professional training courses to Experts Exchange. With a subscription, you can access all the Cloud Class® courses to expand your education, prep for certifications, and get top-notch instructions.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now