c#计算标准偏差实现跟excel中一样的STDEVP()

前言:这篇博客里写的DataTable中的Compute方法中有STDEV方法的使用,但是没有没有STDEVP方法。犯了愁。客户要求就得用STDEVP那怎么办。网上找了好多,有一篇写的是我想要的。在此总结一下!
先上一个StDev:

string  StDevValue= table.Compute("StDev(field)", "field>0");

大概这个样子。
STDEVP:

DataRow[] ddr = data.Select(dt2.Rows[j]["field"].ToString() + " is not null ");
double[] array = new double[ddr.Length];
int di = 0;
foreach (DataRow ddrs in ddr)
{
    
    
	array[di] = Convert.ToDouble(ddrs[dt2.Rows[j]["field"].ToString()]);
	di++;
}
	double stdDev = CalculateStdDev(array);
	dr[dt2.Rows[j]["field"].ToString()] = stdDev;

上边的这一块代码是我这自己需要的。懒得整理。凑活看;你根据你的需求自己调整
//主要部分

		private static double CalculateStdDev(IEnumerable<double> values)
        {
    
    
            double ret = 0;
            if (values.Count() > 0)
            {
    
    
                //  计算平均数   
                double avg = values.Average();
                //  计算各数值与平均数的差值的平方,然后求和 
                double sum = values.Sum(d => Math.Pow(d - avg, 2));
                //  除以数量,然后开方
                ret = Math.Sqrt(sum / values.Count());
            }
            return ret;
        }

主要这就完了。谢谢everyone

猜你喜欢

转载自blog.csdn.net/hello_mr_anan/article/details/84252399