上一个问题:F# Filtering multiple years
我需要返回两年的int列表,其中给定年份是数据集中任何二月份的最大降雨量。
到目前为止,我发现使用List.maxBy的第一年,但我相信这只会返回第一个最大值。
let rainfall
ds |> List.filter (fun s-> month(s)=2)
|> List.maxBy rain
|> year
那么如何显示第一个和第二个?
答案 0 :(得分:0)
使用List.sort
提供按雨降序排序的功能,并采用前2个元素
答案 1 :(得分:0)
您应该按降序排序:
let rainfall
ds |> Seq.filter (fun s-> month(s)=2)
|> Seq.sortBy (fun m -> -(rain m)) //Sort by the value of rain negated
|> Seq.take 2
|> Seq.toList
然后只取第2个。
这将为您列出2个项目,一个降雨量最多,另一个次之。
如果您希望将它们作为单独的值,则可以执行以下操作:
let most = ds |> List.nth 0
let secondMost = ds |> List.nth 1