这段 r 代码是连接两个表并创建一个图吗?

问题描述

谁能给我解释一下这段代码功能?以及它打算做什么?

airports %>%
  semi_join(flights,c("faa" = "dest")) %>%
  ggplot(aes(lon,lat))+
  geom_point()

解决方法

如果你被一段代码弄糊涂了,把它分解成更小的步骤,看看每一行做了什么。如果您不了解某些功能,可在 ?function_name(示例 - ?semi_join)找到其文档。

数据集 airportsflights 似乎来自包 nycflights13。加载运行代码所需的库。

library(dplyr)
library(nycflights13)
library(ggplot2)

semi_join 保留两个数据集之间匹配的公共行。连接数据集的要匹配的列是 faa 中的 airportsdest 中的 flights。如果您不知道 join 是如何工作的,请举一个较小的示例并在其上尝试此代码。您还可以查看 How to join (merge) data frames (inner,outer,left,right) 以了解不同连接函数的一般说明。

airports %>% semi_join(flights,c("faa" = "dest"))

#   faa   name                               lat    lon   alt    tz dst   tzone            
#   <chr> <chr>                             <dbl>  <dbl> <dbl> <dbl> <chr> <chr>            
# 1 ABQ   Albuquerque International Sunport  35.0 -107.   5355    -7 A     America/Denver   
# 2 ACK   Nantucket Mem                      41.3  -70.1    48    -5 A     America/New_York 
# 3 ALB   Albany Intl                        42.7  -73.8   285    -5 A     America/New_York 
# 4 ANC   Ted Stevens Anchorage Intl         61.2 -150.    152    -9 A     America/Anchorage
# 5 ATL   Hartsfield Jackson Atlanta Intl    33.6  -84.4  1026    -5 A     America/New_York 
# 6 AUS   Austin Bergstrom Intl              30.2  -97.7   542    -6 A     America/Chicago  
# 7 AVL   Asheville Regional Airport         35.4  -82.5  2165    -5 A     America/New_York 
# 8 BDL   Bradley Intl                       41.9  -72.7   173    -5 A     America/New_York 
# 9 BGR   Bangor Intl                        44.8  -68.8   192    -5 A     America/New_York 
#10 BHM   Birmingham Intl                    33.6  -86.8   644    -6 A     America/Chicago  
# … with 91 more rows

运行代码后,上面的数据框是用 ggplot2 库绘制的,其中 x 轴是 lon,y 轴是 lat。它使用 geom_point 绘制散点图。

airports %>%
  semi_join(flights,c("faa" = "dest")) %>%
  ggplot(aes(lon,lat))+
  geom_point()

enter image description here