我有这样的数据
数据
1 1 2 2 2 2 2 blank/ null 1 1 3 3 4 4 4 blank/ null blank/ null
试图获得基数(非空白行总数)和百分比列以及频率。
到目前为止已经获得了
Column Count
1 4
2 5
3 2
4 3
使用此代码
var result = data.GroupBy(x => x.Field<string>(xx), (row, l) => new Group { Column = row, Count = l.Count() })
我正在尝试groupby以获得类似这样的输出
Column Count Base Percent
1 4 14 28.57142857
2 5 14 35.71428571
3 2 14 14.28571429
4 3 14 21.42857143
答案 0 :(得分:2)
步骤
赞
var data = new int?[] { 1, 1, 2, 2, 2, 2, 2, null, 1, 1, 3, 3, 4, 4, 4, null, null };
var filteredData = data.Where(x => x != null);
var totalCount = filteredData.Count();
var groups = filteredData.GroupBy(x => x);
var result = groups.Select(x => new { Value = x.Key, Count = x.Count(), Percent = x.Count() * 100.0 / totalCount });
注意:分组是分组项目加键的集合。关键是您选择分组的依据。在此示例中,键为int。而且由于该组是一个集合,因此您可以在其上进行类似.Count()
的操作。