总结一下我在标题中遇到的数据操作问题是很困难的,但是一个简短的例子很好地总结了这一点。我有一个航空公司相关数据的数据表,其中列有原产地和目的地机场。我的数据如下:
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的结果,并总结了我所做的,也如上面所示。然而,当我做我的小组和总结时,我想把它合并在一起(民解力量和民解力量),而不是分开(第1行有(民族解放力量,伊图人),第5行有(民解力量,民解力量))。在我的输出中,这些分组行是分开的,因为row1对应于从HNL机场到ITO机场的航班,而row5对应于从ITO到HNL的航班。我得到的数据将被分成7组,而不是14组。
如果对此有任何想法,我们将不胜感激。我正在学习管道的dplyr和%>%,它们很好,我也想得到它。
编辑-我尝试将我的选择行更改为
select(airport1=pmin(Origin,Dest),airport2=pmax(Origin,Dest),ActualElapsedTime)但没成功..。
发布于 2017-01-29 05:46:46
一种方法是创建一个新变量,包含airport1和airport2的每个配对,然后将其作为分组变量进行汇总。
在本例中,我们通过按字母顺序粘贴airport1和airport2的名称来创建一个名为组合airport1的变量,因此我们对每个配对都有一个唯一的值。
my_data <- collect(
flightdata %>%
filter(TailNum == t_n) %>%
select(airport1 = Origin, airport2 = Dest, ActualElapsedTime) %>%
mutate(combination = ifelse(airport1 < airport2,
paste(airport1, airport2),
paste(airport2, airport1))
) %>%
group_by(combination) %>%
summarize(ActualElapsedTime = mean(ActualElapsedTime))
)https://stackoverflow.com/questions/41916812
复制相似问题