How to 'average' a sine wave of RMS values?
First of all, you should rephrase your question like: How to get an average value from measurings. The term RMS makes just confusion as it makes no difference if you want to get an average of peak, rms,...whtever  values.
Simplest method is a moving avearage filter, you need a circular buffer FIFO where you fill the measurings. At each new input, you discard the oldest and compute the new average recursively. https://en.wikipedia.org/wiki/Moving_average

Average = Average + NewestValue/n - OldestValue/n; purge OldestValue from FIFO and insert NewestValue in.

NewValue: xyz;
Average: xyz or float or double;
FIFO: array[0..63] of xyz; //curcular buffer of 64 elements
Pointer: int;

//at init:
FIFO[from 0 to 63]=NewValue;
Average = NewValue;
Pointer = 0;

//at each measuring
Average = Average + NewValue/64 - FIFO[Pointer]/64;
FIFO[Pointer] = NewValue; // purge last and overwrite with new
Pointer= (Pointer + 1) AND 63; //increment pointer with roll over, circular buffer