F#中的GroupBy和每组的平均值

时间:2014-04-02 19:48:09

标签: f# group-by

我是F#的新手,我在使用简单的第一个查询时遇到了麻烦。我有一个数据集,我想根据代码(在数据中重复)对美元金额进行分组。然后,对于每个组,我想要每组的美元金额的平均值(并最终标准差)。另外,我只想查看一个providerID,因此是'where'子句。从我的研究来看,我已经走到了这一步:

let dc = new TypedDataContext()

let query2 = query { for x in dc.MyData do
                     groupBy x.Code into g
                     where (x.ProviderId = "some number of type string")
                     let average = query { for n in g do
                                           averageBy n.DollarAmt }
                     select (g.Key, average) }
System.Console.WriteLine(query2)

有了这个,我得到一个编译错误,上面写着“没有定义命名空间或模块'x'。” 我不明白这一点,因为当我运行只收集带有指定providerID的数据的查询时,它没有抱怨这个'x',并且我对这个更大的查询使用了与'x'相同的格式。

有什么想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

来自@ kvb的评论:在groupBy之后,您只能访问论坛g,而不能访问各个项x。尝试将where放在groupBy之前。