在程序中,我们经常需要计算一个series的某个百分位数据,如50%分位(中值),25%和75%分位等。在R和Python 中往往有现成的程序,在C#中,我们可以计算为:
public static double Percentile(IEnumerable<double> seq, double percentile)
{
var elements = seq.ToArray();
Array.Sort(elements);
var realIndex = percentile * (elements.Length - 1);
var index = (int)realIndex;
var frac = realIndex - index;
if (index + 1 < elements.Length)
return elements[index] * (1 - frac) + elements[index + 1] * frac;
return elements[index];
}