关于c#中的datagrid视图计算统计计算 [英] about datagrid view in c# calculating statistical calculations
问题描述
我正在开发窗口应用程序。我将几个文本文件导入datagridview1。
它的每个列包含大约220行。现在我想计算下一个datagridview2中所有列的平均值。
之后想在下一个datagridview3中垂直转置datagridview2平均值
然后接下来想要计算datagridview3值的总数我们已经转换到下一个datagridview4。
接下来现在计算那些平均值的标准偏差
我写了这段代码我上市
但在此代码中没有得到正确的答案。请更正
I am developing window application . Im importing few text files to datagridview1.
Its each colum contain about 220 rows .Now i want to calculate average of all the column in next datagridview2 .
after that want to transpose the datagridview2 average values vertically in next datagridview3
then next want to calculate the total count of datagridview3 values that we have transposed in the next datagridview4.
next now calculate the standard deviation of those average values
I have written this code Im listing
but in this code not getting the correct answer. pls correct it
public DataTable computedTable(DataTable dt)
{
DataTable avgtable = new DataTable();
List<double> values = new List<double>();
double value = 0.00;
double sumForMean = 0.00, bigSum = 0.00, mean = 0.00;
double stdDev = 0.00;
double minval = 0.00;
double maxval = 0.00;
bool b = true;
var meanrow = avgtable.NewRow();
var countrow = avgtable.NewRow();
var stddevrow = avgtable.NewRow();
var maxrow = avgtable.NewRow();
var minrow = avgtable.NewRow();
for (int col = 0; col < dt.Columns.Count; col++)
{
value = 0.00;
sumForMean = 0.00; bigSum = 0.00; mean = 0.00;
stdDev = 0.00;
maxval=0.00;minval=0.00;
avgtable.Columns.Add(dt.Columns[col].ColumnName);
for (int row = 0; row < dt.Rows.Count; row++)
{
values.Add( double.Parse(dt.Rows[row][col].ToString()));
}
// Calculate the total for the mean
for (int i = 0; i < values.Count; i++)
sumForMean += values[i];
// Calculate the mean
mean = sumForMean / values.Count;
// Calculate the total for the standard deviation
for (int i = 0; i < values.Count; i++)
bigSum += Math.Pow(values[i] - mean, 2);
// Now we can calculate the standard deviation
stdDev = Math.Sqrt(bigSum / (values.Count - 1));
//Now Calculate Max Value of each column
maxval = mean + this.Tvalue(double.Parse(values.Count.ToString())-1)*(stdDev/(Math.Sqrt(double.Parse(values.Count.ToString()))));
minval = mean - this.Tvalue(double.Parse(values.Count.ToString())-1) * (stdDev / (Math.Sqrt(double.Parse(values.Count.ToString()))));
if (b == true)
if (b)
{
avgtable.Rows.Add(meanrow);
avgtable.Rows.Add(countrow);
avgtable.Rows.Add(stddevrow);
avgtable.Rows.Add(maxrow);
avgtable.Rows.Add(minrow);
}
meanrow[col] = mean;
countrow[col] = values.Count.ToString();
stddevrow[col] =stdDev;
maxrow[col] = maxval;
minrow[col] = minval;
b = false;
values.Clear();
}
values.Add(value);
return avgtable;
}
推荐答案
希望您使用DataTable
作为您的DataGridView
的数据源。
然后您可以使用此方法获取IQueryable
来自数据表的接口。
Hopefully you have used aDataTable
as the data source for yourDataGridView
.
Then you can use this method to get theIQueryable
interface from the data table.
DataTable dt = datagridview1.DataSource;
var query = dt.AsEnumerable().AsQueryable();
double average = query.Average(row => (int)row["column_name"]); // If the column data type is an int
至于其他统计计算,你可以使用这篇CP文章作为指南使用LINQ计算基本统计数据 [ ^ ]
这篇关于关于c#中的datagrid视图计算统计计算的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!