The data referred to as testdat in this question is here if you would like to fiddle with it. Here it is as a ListPlot.
I am trying to plot the "average" of this data and other data like it (and then plot a line using Interpolate), allowing for discontinuities where they are obvious to a human. If there were no jumps anywhere then any of MovingAverage, MovingMedian, MeanShiftFilter get me what I want, but they deal badly with the jump in their own ways, as shown below.
A crude answer that I've thought of is to use MeanShiftFilter, then delete points that aren't near any others. However, I then lose lots of data near the jump and so lose some precision in where the jump is when interpolating. Using MeanShiftFilter with a tighter radius, say 0.1, works quite well for the jump, but then gives too much noise elsewhere in the data where I would like a smooth line.
Better might be to use MovingAverage (with probably a smaller run length than 30), delete the ones in the slope somehow and then put a discontinuity on the middle, but I'm not sure actually how I might do this.
Using something like FindClusters I don't really like as sometimes the jumps are less obvious than this and there may be multiple in a data set, in fact for this reason I feel approaches that look at all the data at once are unlikely to work, and it will be better to deal with each jump as it comes.