如果我上传了一个CSV文件,我将其分成SEQUENCE中的行。
如果在ROW 1中有一个值的多个实例,我如何用ROW 1中的值平均ROW 2中的值,所以我现在只有ROW 1中每个值的一个实例。 /> {这只是一个例子,ROW 1和ROW 2是理论上的。}
请注意我正在使用序列。
数据示例和理想结果如下:
给出了什么:
Row 1 --- Row 2 (Dollars)
2010 --- 50000.198
2010 --- 45151.451
2011 --- 75641.372
2011 --- 91652.710
2012 --- 11281.450
2012 --- 70046.154
2012 --- 97778.054
2013 --- 555574.501
2013 --- 78921.215
我想要的:
Row 1 --- Row 2
2010 --- 47575.825
2011 --- 93647.041
2012 --- 59701.886
2013 --- 317247.858
答案 0 :(得分:3)
听起来您已经解析了CSV文件并将值拉入序列中。对于这个例子,让我们假设你把它拉成一个元组列表,其中year作为第一个元素,cost作为第二个元素,相当于:
master
您可以使用一些let costByYear =
[
(2010,50000.198)
(2010,45151.451)
(2011,75641.372)
(2011,91652.710)
(2012,11281.450)
(2012,70046.154)
(2012,97778.054)
(2013,555574.501)
(2013,78921.215)
]
个功能按年份分组(Seq.groupBy
),然后平均费用(Seq.average
):
Seq
运行此:
let avgCostPerYear =
let avg (year, costs) = (year, Seq.average <| Seq.map snd costs)
Seq.groupBy fst >> Seq.map avg
的产率:
printfn "%A" (avgCostPerYear costByYear)