首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何基于组标准进行过滤?

如何基于组标准进行过滤?
EN

Stack Overflow用户
提问于 2015-11-23 16:09:01
回答 1查看 89关注 0票数 3

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

问题

纽约航班延误数据集有三个月的时间里,有超过7000次天气延误。我想过滤掉所有其他几个月,这样我就只有这三个月可以分析了。如何在F#中做到这一点?长期的F#解决方案只是打电话给R吗?或者.NET中是否有健壮的数据库可以完成这些任务。

EN

Stack Overflow用户

发布于 2015-11-23 17:34:36

您可以使用来自FSharp.Data的CSV类型提供程序对您的数据进行强类型访问,甚至直接从internet地址:

代码语言:javascript
复制
#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">

这使您可以对数据源进行强类型访问。例如,要查找所有天气延迟超过7000次的月份,您可以这样做:

代码语言:javascript
复制
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.)

数据转换为列表,如下所示:

代码语言:javascript
复制
> 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获取这些月份中的所有行。

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

票数 6
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33875482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档