Suppose you have a hot observable for which you would love to keep the count of. It could be the IObservable<StockTick>
and you want to keep count of the average trade volume. You can use Scan
for that.
var tradeVolume = stockTicks.Select(e => e.Price)
.Scan(0.0m, (aggregated, newtick) => aggregated + newtick)
.Select((aggregated, index) => aggregated / (index + 1))
Now you can simply subscribe to your trade volume which is live updated upon receipt of every new Tick.
var subscription = tradeVolume.Subscribe(vol => Console.WriteLine("New trade volume is {0}", vol);