F# 如何基于组标准进行筛选?
我是一名R开发人员,对精通F#很感兴趣,所以这个问题是如何塑造和重塑数据这一更广泛主题的一部分 问题:F# 如何基于组标准进行筛选?,f#,F#,我是一名R开发人员,对精通F#很感兴趣,所以这个问题是如何塑造和重塑数据这一更广泛主题的一部分 问题: 有三个月的时间,有7000多个天气延迟。我想过滤掉所有其他月份,这样我只有这三个月的时间来分析。在F#中如何实现这一点?长期的F#解决方案仅仅是调用R吗?或者.NET中是否有强大的数据库已经可以执行此类任务。您可以使用来自的CSV类型提供程序对数据进行强类型访问,甚至直接从internet地址: #r "../packages/FSharp.Data.2.2.5/lib/net40/FShar
有三个月的时间,有7000多个天气延迟。我想过滤掉所有其他月份,这样我只有这三个月的时间来分析。在F#中如何实现这一点?长期的F#解决方案仅仅是调用R吗?或者.NET中是否有强大的数据库已经可以执行此类任务。您可以使用来自的CSV类型提供程序对数据进行强类型访问,甚至直接从internet地址:
#r "../packages/FSharp.Data.2.2.5/lib/net40/FSharp.Data.dll"
open System
open FSharp.Data
type FlightDelays =
CsvProvider<"https://raw.githubusercontent.com/wiki/arunsrinivasan/flights/NYCflights14/delays14.csv">
转换为列表后,数据如下所示:
let monthsWithDelaysOver7k =
FlightDelays.GetSample().Rows
|> Seq.filter (fun r -> not (Double.IsNaN r.Weather_delay))
|> Seq.groupBy (fun r -> r.Year, r.Month)
|> Seq.map (fun ((y, m), rs) -> y, m, rs |> Seq.sumBy (fun r -> r.Weather_delay))
|> Seq.filter (fun (y, m, d) -> d >= 7000.)
> monthsWithDelaysOver7k |> Seq.toList;;
val it : (int * int * float) list =
[(2014, 1, 118753.0); (2014, 2, 59567.0); (2014, 4, 7618.0);
(2014, 5, 11594.0); (2014, 6, 15928.0); (2014, 7, 54298.0);
(2014, 10, 7241.0)]
您现在可以使用monthsWithDelaysOver7k
获取这些月份的所有行
您可能可以编写一些比上述更有效的查询,但这应该会让您了解如何解决问题。分享您的研究成果对每个人都有帮助。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!也看到