【发布时间】:2017-01-29 01:42:52
【问题描述】:
将我正在努力解决的数据操作问题总结为一个标题很困难,但一个简短的示例很好地总结了这一点。我有一个航空公司相关数据的数据表,其中包含出发地和目的地机场的列。我的数据如下所示:
my_data = collect(filter(flightdata, TailNum == t_n) %>%
select(airport1=Origin,airport2=Dest,ActualElapsedTime) %>%
group_by(airport1,airport2) %>%
summarize(ActualElapsedTime = mean(ActualElapsedTime)))
my_data
airport1 airport2 ActualElapsedTime
<chr> <chr> <dbl>
1 HNL ITO 51.67416
2 HNL KOA 44.00937
3 HNL LIH 37.98526
4 HNL OGG 37.52542
5 ITO HNL 50.02260
6 ITO OGG 39.22222
7 KOA HNL 43.52518
8 KOA OGG 34.20370
9 LIH HNL 33.47679
10 LIH OGG 47.06522
11 OGG HNL 35.28550
12 OGG ITO 37.57143
13 OGG KOA 31.61364
14 OGG LIH 45.46667
这个表是 group_by 的结果,我做了总结,也如上所示。但是,当我进行 groupby 并总结时,我希望它将 (HNL ITO) 和 (ITO HNL) 组合在一起,而不是单独的(第 1 行有(HNL,ITO),第 5 行有(ITO,HNL)) .这些分组行在我的输出中分开的原因是因为 row1 对应于从 HNL 机场到 ITO 机场的航班,而 row5 对应于从 ITO 到 HNL 的航班。然后,我生成的数据框将分为 7 组,而不是 14 组。
对此的任何想法将不胜感激。我只是在学习 dplyr 和 %>% 用于管道,它们很棒,我也想得到这个。
编辑 - 我尝试将我的选择行更改为
select(airport1=pmin(Origin,Dest),airport2=pmax(Origin,Dest),ActualElapsedTime)
但它没有工作......
【问题讨论】:
-
这看起来像一个类似的问题:stackoverflow.com/questions/28992028/…
-
会看看谢谢
-
我没有像那篇文章那样对三个变量的所有组合进行分组。我试图告诉 dplyr “将 HNL ITO 视为与 ITO HNL 相同,即使它们位于不同的列中”。我认为最好的方法是正确设置 airport1 和 airport2,就像我在 select 语句中尝试的那样