我有以下數據:組,和與加權平均F#
let data = [(41609.00 , 10000., 3.822); (41609.00, 60000., 3.857); (41974.00 , 20000., 4.723); (41974.00, 30000., 3.22); (41974.00 , 4000., 4.655); (42339.00, 7000., 4.22); (42339.00 , 5000., 3.33)]
拳頭柱= OADate,第二=體積,第三=價格。
我現在想按日期分組,計算總量並計算加權平均價格。這是我到目前爲止:
let aggr data =
data
//Multiply second and third column element by element
|> Seq.map (fun (a, b, c) -> (a, b, b * c))
//Group by first column
|> Seq.groupBy fst
//Sum column 2 & 3 based on group of column 1
|> Seq.map (fun (d, e, f) -> (d, e |> Seq.sum, f |> Seq.sum))
//take the sum and grouped column 1 & 2 and compute weighted average of the third
|> Seq.map (fun (g, h, i) -> (g, h, i/h))
我得到一個類型不匹配的元組有不同的長度。我以前使用類似的語法沒有問題。 任何人都可以請我指出正確的方向?
UPDATE:
如果有人有興趣的解決方案是:多虧了托馬斯和葉
let aggr data =
data
|> Seq.map (fun (a, b, c) -> (a, b, b * c))
|> Seq.groupBy (fun (a, b, c) -> a)
|> Seq.map (fun (key, group) -> group |> Seq.reduce (fun (a, b, c) (x, y, z) -> a, b+y , c+z))
|> Seq.map (fun (g, h, i) -> (g, h, i/h))
可能會對此感興趣的相關問題:http://stackoverflow.com/q/2328697/11410 – Benjol