awk based script to find the average of all the columns in a data file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk based script to find the average of all the columns in a data file
# 1  
Old 05-15-2012
awk based script to find the average of all the columns in a data file

Hi All,

I need the modification for the below mentioned code (found in one more post https://www.unix.com/shell-programmin...ge-values.html) to find the average values for all the columns(but for a specific rows) and print the averages side by side.

I have the below input format.
Code:
H1,H2,H3,H4
1,2,3,4
1,3,4,5
2,4,5,6
3,4,5,6
5,6,7,8
5,5,4,5

I got the below code which gives the average of all rows in every column and printing the output like below.
Avg.of.col1,avg.of.col2,avg.of.col3,avg.of.col4

Code:
FNR==1 { nf=NF} {  for(i=1; i<=NF; i++)    arr[i]+=$i   fnr=FNR } END {   for( i=1; i<=nf; i++)    printf("%.2f%s", arr[i] / fnr, (i==nf) ? "\n" : FS) }

But I need the below kind of code (complete shell script)
Code:
awk -F,  '$1==specificvalue{Code for average of all columns and print one by one}' inputfile.

The variable specificvalue mentioned in the script is automatically generated by a for loop.

Regards
Sidda
# 2  
Old 05-15-2012
What should be the desired output?
# 3  
Old 05-15-2012
Desired output provided below.

Hi Franklin,

I need the below output for the input data provided.
Code:
1,2.5,3.5,4.5
2,4,5,6
3,4,5,6
5,5.5,5.5,6.5

(or)

Code:
2.5,3.5,4.5
4,5,6
4,5,6
5.5,5.5,6.5

preferably the first one.

I am running my script currently like this.

Code:
for i in $(seq 0 12); do # As all my files are having $1 from 0 to 12

awk -F, -v var1="$i" '$1==var1' file | awk -F, -f 1.awk

done

where my 1.awk is

Code:
FNR==1 { nf=NF} {  for(i=1; i<=NF; i++)    arr[i]+=$i   fnr=FNR } END {   for( i=1; i<=nf; i++)    printf("%.2f%s", arr[i] / fnr, (i==nf) ? "\n" : FS) }

Though I am getting desired output, I want to avoid the "|" and merge both the statements into a single command.

Thanks
Sidda
# 4  
Old 05-15-2012
like this?

Code:
# cat input
H1,H2,H3,H4
1,2,3,4
1,3,4,5
2,4,5,6
3,4,5,6
5,6,7,8
5,5,4,5

Code:
# awk -F, '$1==x&&NR>1{f=NF;for(i=1;i<=NF;i++)a[i]+=$i}END{for(i=1;i<=f;i++)printf "%10s" ,a[i]/(NR-1);print ""}' x=$yourvalue input

# 5  
Old 09-06-2012
need help

i have the following data

0 ORANGE 751 BLUE 885
1 RED 787 GOLD 892
2 ORANGE 298 BLUE 138
3 RED 395 GOLD 755
4 ORANGE 658 GOLD 880
5 RED 79 BLUE 323
6 RED 977 GOLD 410
7 RED 406 BLUE 10
8 RED 15 BLUE 269
9 ORANGE 696 BLUE 623
10 ORANGE 878 BLUE 606

AND i need help displaying it like this

Required Output
TOTAL: 11
# of Red: 6
# of Orange: 5
# of Blue: 7
# of Gold: 4
Avg. of Num A Column: 540.000000
Avg. of Num B Column: 526.454545

I came up with a awk code to help me find the avg of the number column in the terminal but the out put is not what i wont
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Need Optimization shell/awk script to aggreagte (sum) for all the columns of Huge data file

Optimization shell/awk script to aggregate (sum) for all the columns of Huge data file File delimiter "|" Need to have Sum of all columns, with column number : aggregation (summation) for each column File not having the header Like below - Column 1 "Total Column 2 : "Total ... ...... (2 Replies)
Discussion started by: kartikirans
2 Replies

2. Shell Programming and Scripting

awk script to find data in three file and perform replace operation

Have three files. Any other approach with regards to file concatenation or splitting, etc is appreciated If column55(billngtype) of file1 contains YMNC or YPBC then pick the value of column13(documentnumber). Now find this documentnumber in column1(Billdoc) of file2 and grep the corresponding... (4 Replies)
Discussion started by: as7951
4 Replies

3. Shell Programming and Scripting

Find columns in a file based on header and print to new file

Hello, I have to fish out some specific columns from a file based on the header value. I have the list of columns I need in a different file. I thought I could read in the list of headers I need, # file with header names of required columns in required order headers_file=$2 # read contents... (11 Replies)
Discussion started by: LMHmedchem
11 Replies

4. Shell Programming and Scripting

Average across multiple columns - awk

Hi forum members, I'm trying to get an average of multiple columns in a csv file using awk. A small example of my input data is as follows: cu,u3o8,au,ag -9,20,-9,3.6 0.005,30,-9,-9 0.005,50,10,3.44 0.021,-9,8,3.35 The following code seems to do most of what I want gawk -F","... (6 Replies)
Discussion started by: theflamingmoe
6 Replies

5. Emergency UNIX and Linux Support

Average columns based on header name

Hi Friends, I have files with columns like this. This sample input below is partial. Please check below for main file link. Each file will have only two rows. ... (8 Replies)
Discussion started by: jacobs.smith
8 Replies

6. Shell Programming and Scripting

awk script to split file into multiple files based on many columns

So I have a space delimited file that I'd like to split into multiple files based on multiple column values. This is what my data looks like 1bc9A02 1 10 1000 FTDLNLVQALRQFLWSFRLPGEAQKIDRMMEAFAQRYCQCNNGVFQSTDTCYVLSFAIIMLNTSLHNPNVKDKPTVERFIAMNRGINDGGDLPEELLRNLYESIKNEPFKIPELEHHHHHH 1ku1A02 1 10... (9 Replies)
Discussion started by: viored
9 Replies

7. UNIX for Dummies Questions & Answers

Find the average based on similar names in the first column

I have a table, say this: name1 num1 num2 num3 num4 name2 num5 num6 num7 num8 name3 num1 num3 num4 num9 name2 num8 num9 num1 num2 name2 num4 num5 num6 num4 name4 num4 num5 num7 num8 name5 num1 num3 num9 num7 name5 num6 num8 num3 num4 I want a code that will sort my data according... (4 Replies)
Discussion started by: FelipeAd
4 Replies

8. Shell Programming and Scripting

awk based script to ignore all columns from a file which contains character strings

Hello All, I have a .CSV file where I expect all numeric data in all the columns other than column headers. But sometimes I get the files (result of statistics computation by other persons) like below( sample data) SNO,Data1,Data2,Data3 1,2,3,4 2,3,4,SOME STRING 3,4,Inf,5 4,5,4,4 I... (9 Replies)
Discussion started by: ks_reddy
9 Replies

9. Shell Programming and Scripting

AWK script to split data and find average

Input: 2.58359023380340e+02 1.43758864405595e+02 -7.65700666212508e+00 1.06460208083228e+02 1.26185441783936e+02 -3.41389169427027e+01 -1.40393299309592e+02 -3.07758776849508e+01 1.45067703495838e+02 1.79405834959073e+02 5.06666234594205e+01 OUT 2.0105894389e+02 (average of... (8 Replies)
Discussion started by: chrisjorg
8 Replies

10. Shell Programming and Scripting

Awk based script to find the median of all individual columns in a data file

Hi All, I have some data like below. Step1,Param1,Param2,Param3 1,2,3,4 2,3,4,5 2,4,5,6 3,0,1,2 3,0,0,0 3,2,1,3 ........ so on Where I need to find the median(arithmetic) of each column from Param1...to..Param3 for each set of Step1 values. (Sort each specific column, if the... (5 Replies)
Discussion started by: ks_reddy
5 Replies
Login or Register to Ask a Question