R-dplyr与groupby一起,将2行与列VAL合并,虽然VAL正确但混淆了

R-dplyr与groupby一起,将2行与列VAL合并,虽然VAL正确但混淆了,r,dplyr,R,Dplyr,将我正在努力解决的数据操作问题总结成一个标题是很困难的,但是一个简短的例子很好地总结了这一点。我有一个航空公司相关数据的数据表,其中包含始发机场和目的地机场的列。我的数据如下所示: my_data = collect(filter(flightdata, TailNum == t_n) %>% select(airport1=Origin,airport2=Dest,ActualElapsedTime) %>% gro

将我正在努力解决的数据操作问题总结成一个标题是很困难的,但是一个简短的例子很好地总结了这一点。我有一个航空公司相关数据的数据表,其中包含始发机场和目的地机场的列。我的数据如下所示:

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

但它不起作用

一种方法是创建一个新变量,包含airport1airport2的每个配对,然后将其作为分组变量汇总数据

在本例中,我们通过按字母顺序粘贴airport1airport2的名称来创建一个名为composition的变量,因此每个配对都有一个唯一的值

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))
  )
my_数据%
过滤器(TailNum==t\u n)%>%
选择(airport1=原点,airport2=目标,ActualLapsedTime)%>%
变异(组合=ifelse(机场1<机场2,
粘贴(机场1、机场2),
粘贴(机场2、机场1))
) %>% 
分组依据(组合)%>%
汇总(ActualLapsedTime=平均值(ActualLapsedTime))
)

这看起来像是一个类似的问题:请看一看,我没有像那篇文章中那样对三个变量的所有组合进行分组。我试图告诉dplyr“对待HNL ITO和ITO HNL一样,即使它们在不同的列中”。我认为最好的方法是正确设置airport1和airport2,就像我在select语句中尝试的那样
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))
  )