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 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章