Похоже, вы уже проанализировали файл CSV и вывели значения в последовательность.Для этого примера, давайте предположим, что вы вытащили его в список кортежей с указанием года в качестве первого элемента и стоимости в качестве второго, что эквивалентно следующему:
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
функцийсгруппировать по году (Seq.groupBy
), а затем усреднить стоимость (Seq.average
):
let avgCostPerYear =
let avg (year, costs) = (year, Seq.average <| Seq.map snd costs)
Seq.groupBy fst >> Seq.map avg
Выполнить это:
printfn "%A" (avgCostPerYear costByYear)
выход:
seq
[(2010, 47575.8245); (2011, 83647.041); (2012, 59701.886); (2013, 317247.858)]