【问题标题】:In R, how to combine dplyr transformations for nycflights13在 R 中,如何为 nycflights13 组合 dplyr 转换
【发布时间】:2022-02-17 03:05:53
【问题描述】:

我试图在 R Studio 的 nycflights13 包中按起点/终点找到五个最短的最小距离,称为 min_dist。结果应该是一个 5 行 3 列(origin、dest 和 min_dist)的 tibble。

我是一个初学者,这就是我目前所拥有的:

Q3 <- flights %>%
           
arrange(flights, distance)
group_by(origin) %>% 
summarise(min_dist = origin/dest)

我收到错误:group_by(origin) 中的错误:找不到对象'origin'。关于做什么的任何提示?许多其他问题与此类似,所以我想弄清楚如何做这些。谢谢

【问题讨论】:

  • origin是字符类(除了分组)
  • 您可能需要flights %&gt;% group_by(origin) %&gt;% summarise(min_dist = min(distance))
  • @akrun 谢谢,这有帮助。但是 tibble 不包括 dest,只有 origin 和 min_dist,并且是 3 行而不是 5 行。但我会继续努力!
  • 我不清楚你问题中的逻辑
  • 您可以使用slice_min,即flights %&gt;% select(origin, dest, distance)%&gt;% distinct %&gt;% slice_min(n = 5, order_by = distance, with_ties = FALSE)

标签: r


【解决方案1】:

这可以通过selecting 感兴趣的列来完成,获取distinct 行并将slice_minn = 5 一起应用

library(dplyr)
flights %>%
  select(origin, dest, min_distance = distance)%>% 
  distinct %>% 
  slice_min(n = 5, order_by = min_distance, with_ties = FALSE)

-输出

# A tibble: 5 × 3
  origin dest  min_distance
  <chr>  <chr>        <dbl>
1 EWR    LGA             17
2 EWR    PHL             80
3 JFK    PHL             94
4 LGA    PHL             96
5 EWR    BDL            116

【讨论】:

    【解决方案2】:

    我们可以使用带有负号的top_n

    library(nycflights13)
    library(dplyr)
    
    flights %>%
      select(origin, dest, distance) %>% 
      distinct() %>% 
      top_n(-5) %>% 
      arrange(distance)
    
      origin dest  distance
      <chr>  <chr>    <dbl>
    1 EWR    LGA         17
    2 EWR    PHL         80
    3 JFK    PHL         94
    4 LGA    PHL         96
    5 EWR    BDL        116
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-15
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多