微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决这段 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。