11-09-2009
Averaging
Hello all,
I'm trying to perform an averaging procedure which selects a selection of rows, average the corresponding value, selects the next set of rows and average the corresponding values etc.
The data below illustrates what I want to do. Given two columns (day and value),
I want to perform an annual average. This means, average the first 365 rows, followed by the next 365 rows, and the next 365 rows.
i.e.
average line 1 to 365 (no. of lines = 365)
average line 366 to 730 (no. of lines = 365)
average line 731 to 1095 (no. of lines = 365)
But there is a problem. Every four years, the calendar has one additional day i.e. leap year. So instead of 365, we have 366. Eventually, the whole averaging pattern should look something like
average line 1 to 365 (no. of lines = 365)
average line 366 to 730 (no. of lines = 365)
average line 731 to 1095 (no. of lines = 365)
average line 1096 to 1461 (no. of lines = 366)
average line 1462 to 1827 (no. if lines = 365)
...
Any suggestions?
Thanks.
day value
1
2
3
...
365
1
2
3
...
365
1
2
3
...
366
1
2
3
365
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hello,
I have three columns of data of the format below:
<name> <volume> <size>
a 2 1.2
a 2 1.1
b 3 1.7
c 0.7 1.9
c 0.7 1.9
c 0.7 1.8
What I... (3 Replies)
Discussion started by: itisthus
3 Replies
2. Shell Programming and Scripting
Hi,
I have a file that I want to average. So specifically I want to average every third column for each row.
Here is an example of my file
2 2 2 3 3 3 1 1 1 5 5 5
Heres what I want it to look like after averaging every third column
2 3 1 5
thanks (11 Replies)
Discussion started by: kylle345
11 Replies
3. Shell Programming and Scripting
Hello,
I am trying to average multiple columns simultaneously while skipping the first column.
I am using this awk line to average one column
awk '{sum+=$3} END { print "Average = ",sum/NR}'
But I want to be able to do it for multiple columns while skipping the first column. There... (4 Replies)
Discussion started by: gisele_l
4 Replies
4. Shell Programming and Scripting
Hello,
I have a awk line that averages rows.
So if my file looks like this:
Jack 1 1 1 1 1 1
Joe 1 1 1 1 1 1
Jerry 0 0 0 0 0 0
John 1 1 1 0 0 0
The awk line below skips column 1 and then averaged the rows
awk -F'\t' -v r=3... (3 Replies)
Discussion started by: phil_heath
3 Replies
5. UNIX for Dummies Questions & Answers
Dear all,
I have the data in the following format. I want to do average of each NR= 5 (rows) for all the 3 ($1,$2, $3) columns and want to print average result in another file in the same format. I dont know how to write code for this in 'awk', can some one help me to write a code for this in... (1 Reply)
Discussion started by: arvindr
1 Replies
6. Shell Programming and Scripting
Hey all,
I have a set of 5-second data as shown below. I need to find an hourly average of this data.
date co2
25/06/2011 08:04:00 8.30
25/06/2011 08:04:05 8.31
25/06/2011 08:04:10 8.32
25/06/2011 08:04:15 8.33
25/06/2011 08:04:20 ... (5 Replies)
Discussion started by: gd9629
5 Replies
7. Shell Programming and Scripting
Hi all,
I have a data file like below, where Time is in the second column
DATE TIME FRAC_DAYS_SINCE_JAN1
2011-06-25 08:03:20.000 175.33564815
2011-06-25 08:03:25.000 175.33570602... (10 Replies)
Discussion started by: gd9629
10 Replies
8. Shell Programming and Scripting
Hi,
I have a file that has 201 columns (1 for the name of each row and the other 200 are values)
I want to print the average for each column
the file looks like this (as an example this only has 7 columns with values)
1 2 3 4 5 6 7
abr 5 6 7 1 2 4 5
hhr 2 1 3 4 ... (8 Replies)
Discussion started by: kylle345
8 Replies
9. Shell Programming and Scripting
Hi,
I am trying to average the values from 3 files with the same format. They are very large files so I will describe the file and show some it of. Basically the file has 83 columns (with nearly 7000 rows). The first three columns are the same for each file while the remaining 80 are values... (3 Replies)
Discussion started by: kylle345
3 Replies
10. Shell Programming and Scripting
Hi,
I am trying to average the values from 3 files with the same format. They are very large files so I will describe the file and show some it of. Basically the file has 83 columns (with nearly 7000 rows). The first three columns are the same for each file while the remaining 80 are values that... (1 Reply)
Discussion started by: kylle345
1 Replies
LEARN ABOUT DEBIAN
print_time_table
PARSE_TIME(3) BSD Library Functions Manual PARSE_TIME(3)
NAME
parse_time, print_time_table, unparse_time, unparse_time_approx, -- parse and unparse time intervals
LIBRARY
The roken library (libroken, -lroken)
SYNOPSIS
#include <parse_time.h>
int
parse_time(const char *timespec, const char *def_unit);
void
print_time_table(FILE *f);
size_t
unparse_time(int seconds, char *buf, size_t len);
size_t
unparse_time_approx(int seconds, char *buf, size_t len);
DESCRIPTION
The parse_time() function converts a the period of time specified in into a number of seconds. The timespec can be any number of <number
unit> pairs separated by comma and whitespace. The number can be negative. Number without explicit units are taken as being def_unit.
The unparse_time() and unparse_time_approx() does the opposite of parse_time(), that is they take a number of seconds and express that as
human readable string. unparse_time produces an exact time, while unparse_time_approx restricts the result to only include one units.
print_time_table() prints a descriptive list of available units on the passed file descriptor.
The possible units include:
second, s
minute, m
hour, h
day
week seven days
month 30 days
year 365 days
Units names can be arbitrarily abbreviated (as long as they are unique).
RETURN VALUES
parse_time() returns the number of seconds that represents the expression in timespec or -1 on error. unparse_time() and
unparse_time_approx() return the number of characters written to buf. if the return value is greater than or equal to the len argument, the
string was too short and some of the printed characters were discarded.
EXAMPLES
#include <stdio.h>
#include <parse_time.h>
int
main(int argc, char **argv)
{
int i;
int result;
char buf[128];
print_time_table(stdout);
for (i = 1; i < argc; i++) {
result = parse_time(argv[i], "second");
if(result == -1) {
fprintf(stderr, "%s: parse error
", argv[i]);
continue;
}
printf("--
");
printf("parse_time = %d
", result);
unparse_time(result, buf, sizeof(buf));
printf("unparse_time = %s
", buf);
unparse_time_approx(result, buf, sizeof(buf));
printf("unparse_time_approx = %s
", buf);
}
return 0;
}
$ ./a.out "1 minute 30 seconds" "90 s" "1 y -1 s"
1 year = 365 days
1 month = 30 days
1 week = 7 days
1 day = 24 hours
1 hour = 60 minutes
1 minute = 60 seconds
1 second
--
parse_time = 90
unparse_time = 1 minute 30 seconds
unparse_time_approx = 1 minute
--
parse_time = 90
unparse_time = 1 minute 30 seconds
unparse_time_approx = 1 minute
--
parse_time = 31535999
unparse_time = 12 months 4 days 23 hours 59 minutes 59 seconds
unparse_time_approx = 12 months
BUGS
Since parse_time() returns -1 on error there is no way to parse "minus one second". Currently "s" at the end of units is ignored. This is a
hack for English plural forms. If these functions are ever localised, this scheme will have to change.
HEIMDAL
October 31, 2004 HEIMDAL