首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R- dplyr,使用groupby,将2行与列值正确但混合在一起。

R- dplyr,使用groupby,将2行与列值正确但混合在一起。
EN

Stack Overflow用户
提问于 2017-01-29 01:42:52
回答 1查看 141关注 0票数 1

总结一下我在标题中遇到的数据操作问题是很困难的,但是一个简短的例子很好地总结了这一点。我有一个航空公司相关数据的数据表,其中列有原产地和目的地机场。我的数据如下:

代码语言:javascript
复制
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和%>%,它们很好,我也想得到它。

编辑-我尝试将我的选择行更改为

代码语言:javascript
复制
select(airport1=pmin(Origin,Dest),airport2=pmax(Origin,Dest),ActualElapsedTime)

但没成功..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-29 05:46:46

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

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

代码语言:javascript
复制
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))
  )
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41916812

复制
相关文章

相似问题

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