Just what I was thinking. You could simply use [metro] to measure the amount of elapsed time, as well as reset the counter. So if you have [metro 1000], you could use each bang from it to sample the counter to determine how many bangs per second, and also use that bang to reset the counter. Then, if you wanted to get the average bangs per second over a longer period of time, you could use something like [mean_n] to to get the bangs per second over n seconds.
The frequency of the update would simply be determined by the argument for [metro].
[metro 1000]
| \
| \
| [0(
| \
| [f 0]X[+ 1]
| /
[f ]
|
| <-- bangs over the last second
|
[mean_n 5] <-- average bangs per second over the last 5 seconds
The bangs go into the left inlet of the [f 0].