关于c#中的datagrid视图计算统计计算 [英] about datagrid view in c# calculating statistical calculations

查看:97
本文介绍了关于c#中的datagrid视图计算统计计算的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发窗口应用程序。我将几个文本文件导入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 a DataTable as the data source for your DataGridView.
Then you can use this method to get the IQueryable 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆