我想:
1.为每个schedule_Region_ids选择未通过qc(QC=1)的箱
1.选择没有QC失败标记(1)的前3个箱(例如,如果没有QC标记=1,则为箱3、4和5)
1.取3个选定值的平均值,为每个schedule_Region_id创建“BaselPeak”。
我尝试了以下代码:
var categories = drugonboard
.Where(p => p.Field<int?>("QC") != 1)
.OrderByDescending(x => x.Field<int>("bin")).Take(3)
.GroupBy(t => new { ID = t.Field<int>("schedule_region_id")})
.Select(g => new
{
schedule_region_id = g.Key.ID,
BaselPeak = g.Average(p => p.Field<double>("AnalytePeak"))
});
字符串
然而,我最终得到的是前3个schedule_region_id,而不是每个schedule_region_id的前3个bin的平均值。如果我先尝试GroupBy
,那么我会得到匿名类型错误。
我有一个数据集,看起来像这样:
id | bin | AnalytePeak | QC
1 | 1 | 620 |
1 | 2 | 1020 |
1 | 3 | 681 | 1
1 | 4 | 1190 |
1 | 5 | 1200 |
---------------------------
2 | 1 | 1020 |
2 | 2 | 1076 |
2 | 3 | 1190 |
2 | 4 | 1200 |
2 | 5 | 358 | 1
---------------------------
3 | 1 | 1020 |
3 | 2 | 1076 |
3 | 3 | 1190 |
3 | 4 | 1200 |
3 | 5 | 1358 |
型
1条答案
按热度按时间jm2pwxwz1#
在分组和排序子记录后,您需要取3。
字符串
这是假设:如果所有的bin都是QC=1,那么你根本不需要schedule_region_id父节点,而top 3是指最高的3个bin编号。