Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 如何基于组标准进行筛选?_F# - Fatal编程技术网

F# 如何基于组标准进行筛选?

F# 如何基于组标准进行筛选?,f#,F#,我是一名R开发人员,对精通F#很感兴趣,所以这个问题是如何塑造和重塑数据这一更广泛主题的一部分 问题: 有三个月的时间,有7000多个天气延迟。我想过滤掉所有其他月份,这样我只有这三个月的时间来分析。在F#中如何实现这一点?长期的F#解决方案仅仅是调用R吗?或者.NET中是否有强大的数据库已经可以执行此类任务。您可以使用来自的CSV类型提供程序对数据进行强类型访问,甚至直接从internet地址: #r "../packages/FSharp.Data.2.2.5/lib/net40/FShar

我是一名R开发人员,对精通F#很感兴趣,所以这个问题是如何塑造和重塑数据这一更广泛主题的一部分

问题

有三个月的时间,有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
获取这些月份的所有行


您可能可以编写一些比上述更有效的查询,但这应该会让您了解如何解决问题。

分享您的研究成果对每个人都有帮助。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!也看到