Sum third column in a file when 1 and 2 repeat


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Sum third column in a file when 1 and 2 repeat
# 1  
Old 06-04-2014
Sum third column in a file when 1 and 2 repeat

Hello,

Below is a portion of a file I am working on:
Code:
2:15 3001 120
2:15 3001 26.25
2:15 3002 12.5
2:15 3002 15
9:45 3001 45
9:45 3001 45
9:45 3002 105
9:45 3005 180
9:45 3005 123.75
9:45 3005 15

I am trying to get the sum of column 3 for all repeated values of columns 1 and 2 (The first two lines for example would be 120 + 26.25 since 2:15 and 3001 repeat)
I am sure awk can do it but I just don't know how.
Thanks!

Last edited by Scrutinizer; 06-04-2014 at 04:39 PM.. Reason: code tags
# 2  
Old 06-04-2014
What would be the desired output for that sample data?
# 3  
Old 06-04-2014
Similar to the original file, but with a single line for occurrence
(Example with the first 4 lines):
Code:
2:15 3001 146.25
2:15 3002 27.5

The first value is time, the second is a group id and the third is utilization. The end goal is to obtain peak usage per group id
Thanks!

Last edited by Don Cragun; 06-18-2014 at 05:57 PM.. Reason: Add CODE tags.
# 4  
Old 06-04-2014
Try:
Code:
awk '{a[$1" "$2]+=$3}END{for (i in a) print i,a[i]}' file | sort

This User Gave Thanks to bartus11 For This Post:
# 5  
Old 06-04-2014
Great. Thanks again
# 6  
Old 06-04-2014
If the file is already sorted:
Code:
awk '{
  key=$1 FS $2
  if (key==pkey) {
    sum+=$3
  } else {
    if (cnt>1) {print pkey,sum; cnt=0}
    sum=$3
  }
  cnt++
  pkey=key
}
END {
  if (cnt>1) print pkey,sum
}
' file

Maybe the following version is easier to understand:
Code:
awk '
((key=$1 FS $2)!=pkey) {
  if (cnt>1) print pkey,sum
  sum=cnt=0
}
{
  sum+=$3; cnt++
  pkey=key
}
END {
  if (cnt>1) print pkey,sum
}
' file


Last edited by MadeInGermany; 06-05-2014 at 08:40 AM.. Reason: Another version
# 7  
Old 06-05-2014
It might help you to read this little tutorial.

I hope this helps.

bakunin
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Sum in file based column

Hi All, I have a file as below and want to sum based on the id in the first column Input 10264;ATE; 12 10265;SES;11 10266AUT;50 10264;ATE;10 10265;SES;13 10266AUT;89 10264;ATE;1 10265;SES;15 10266AUT;78 Output 10264;ATE; 23 10265;SES;39 10266AUT;139 (6 Replies)
Discussion started by: arunkumar_mca
6 Replies

2. UNIX for Beginners Questions & Answers

How to sum value of a column by range defined in another file awk?

I have two files, file1.table is the count table, and the other is the range condition file2.range. file1.table chr start end count N1 0 48 1 N1 48 181 2 N1 181 193 0 N1 193 326 2 N1 326 457 0 N1 457 471 1 N1 471 590 2 N1 590 604 1 N1 604 752 1 N1 752 875 1 file2.range... (12 Replies)
Discussion started by: yifangt
12 Replies

3. UNIX for Beginners Questions & Answers

Copy columns from one file into another and get sum of column values and row count

I have a file abc.csv, from which I need column 24(PurchaseOrder_TotalCost) to get the sum_of_amounts with date and row count into another file say output.csv abc.csv- UTF-8,,,,,,,,,,,,,,,,,,,,,,,,, ... (6 Replies)
Discussion started by: Tahir_M
6 Replies

4. Shell Programming and Scripting

awk to Sum columns when other column has duplicates and append one column value to another with Care

Hi Experts, Please bear with me, i need help I am learning AWk and stuck up in one issue. First point : I want to sum up column value for column 7, 9, 11,13 and column15 if rows in column 5 are duplicates.No action to be taken for rows where value in column 5 is unique. Second point : For... (1 Reply)
Discussion started by: as7951
1 Replies

5. Shell Programming and Scripting

Repeat same word in the rest of the column.

My input is: a.txt computer b.txt c.txt e.txt I want my output to be: a.txt computer b.txt computer c.txt computer e.txt computer There are about 100000 text files having the same format as my input data. What I am doing now is too slow and also requires plenty of scripts. 1. wc -l all... (3 Replies)
Discussion started by: shoaibjameel123
3 Replies

6. UNIX for Dummies Questions & Answers

Match sum of values in each column with the corresponding column value present in trailer record

Hi All, I have a requirement where I need to find sum of values from column D through O present in a CSV file and check whether the sum of each Individual column matches with the value present for that corresponding column present in the trailer record. For example, let's assume for column D... (9 Replies)
Discussion started by: tpk
9 Replies

7. Shell Programming and Scripting

Sum values of specific column in multiple files, considering ranges defined in another file

I have a file (let say file B) like this: File B: A1 3 5 A1 7 9 A2 2 5 A3 1 3 The first column defines a filename and the other two define a range in that specific file. In the same directory, I have also three more files (File A1, A2 and A3). Here is 10 sample lines... (3 Replies)
Discussion started by: Bastami
3 Replies

8. Shell Programming and Scripting

Help with subtraction column by column and repeat print out with N

Input file: 2 10 15 20 24 Output file 2 8 NNNNNNNN 10 5 NNNNN 15 5 NNNNN 20 4 NNNN 24 Do anybody experience subtraction column by column and print out number of subtraction times with N? The second column of the output file is the subtraction of 10-2 = 8; The third column just... (3 Replies)
Discussion started by: perl_beginner
3 Replies

9. Shell Programming and Scripting

Sum of 286th column using awk in a file

Hi, I am using the following code to find the sum of the values of column 286 in a file. It will have the Decimal values with the scale of 2. Delimiter is '|^' cut -d'|^' -f286 filename|cut -c3-| awk '{ x += $1 } END { printf("%.2f\n", x) }' There are around 50k records in this file... (2 Replies)
Discussion started by: Jram
2 Replies

10. UNIX for Dummies Questions & Answers

Sum up a decimal column in a tab separated text file and error handling

Hi, I have a small requirement where i need to sum up a column in a text file. Input file 66ab 000000 534385 -00000106350.00 66cd 000000 534485 -00013364511.00 66ad 000000 534485 -00000426548.00 672a 000000 534485 000000650339.82... (5 Replies)
Discussion started by: pssandeep
5 Replies
Login or Register to Ask a Question

Featured Tech Videos