在R中合并三个数据帧,而不使用SQL包

在R中合并三个数据帧,而不使用SQL包,r,ggplot2,R,Ggplot2,我在R中有3个数据帧,我正试图将它们合并在一起,通过一个类似的练习,按州在美国地图上绘制信息 Data Frame 1=我要分析的数据,其中只有FIPS US状态代码。 Data Frame 2=数据帧1的查找表,它将状态代码映射到名称。 数据帧3=使用[all_states]函数映射到一个州的绘图信息,如所述,该函数包含映射信息,但需要首先标记为“alabama”与“1” 我已经玩了一段时间了,我绊倒了,可能错过了一个明显的解决方案。我只是第一次尝试这样的东西,但它不起作用 我正在寻找一种相对

我在R中有3个数据帧,我正试图将它们合并在一起,通过一个类似的练习,按州在美国地图上绘制信息

Data Frame 1=我要分析的数据,其中只有FIPS US状态代码。 Data Frame 2=数据帧1的查找表,它将状态代码映射到名称。 数据帧3=使用[all_states]函数映射到一个州的绘图信息,如所述,该函数包含映射信息,但需要首先标记为“alabama”与“1”

我已经玩了一段时间了,我绊倒了,可能错过了一个明显的解决方案。我只是第一次尝试这样的东西,但它不起作用

我正在寻找一种相对简单的方法,将数据集中的“1”连接到“alabama”,而不使用
sqldf
包,也不将FIPS表硬编码到我的代码中。有什么建议吗

数据帧2:

> head(States)
        Name FIPS.Code USPS.Code
1    Alabama         1        AL
2     Alaska         2        AK
3    Arizona         4        AZ
4   Arkansas         5        AR
5 California         6        CA
6   Colorado         8        CO
数据框3:

> head(all_states,20)
        long      lat group order  region subregion
1  -87.46201 30.38968     1     1 alabama      <NA>
2  -87.48493 30.37249     1     2 alabama      <NA>
3  -87.52503 30.37249     1     3 alabama      <NA>
4  -87.53076 30.33239     1     4 alabama      <NA>
5  -87.57087 30.32665     1     5 alabama      <NA>
6  -87.58806 30.32665     1     6 alabama      <NA>
7  -87.59379 30.30947     1     7 alabama      <NA>
8  -87.59379 30.28655     1     8 alabama      <NA>
9  -87.67400 30.27509     1     9 alabama      <NA>
10 -87.81152 30.25790     1    10 alabama      <NA>
11 -87.88026 30.24644     1    11 alabama      <NA>
12 -87.92037 30.24644     1    12 alabama      <NA>
13 -87.95475 30.24644     1    13 alabama      <NA>
14 -88.00632 30.24071     1    14 alabama      <NA>
15 -88.01778 30.25217     1    15 alabama      <NA>
16 -88.01205 30.26936     1    16 alabama      <NA>
17 -87.99486 30.27509     1    17 alabama      <NA>
18 -87.95475 30.27509     1    18 alabama      <NA>
19 -87.90318 30.28082     1    19 alabama      <NA>
20 -87.82870 30.28655     1    20 alabama      <NA>
>标题(所有州,20个)
长lat群序域子区域
1-87.46201 30.38968 1阿拉巴马州
2-87.48493 30.37249 1 2阿拉巴马州
3-87.52503 30.37249 1 3阿拉巴马州
4-87.53076 30.33239 14阿拉巴马州
5-87.57087 30.32665 1 5阿拉巴马州
6-87.58806 30.32665 1 6阿拉巴马州
7-87.59379 30.30947阿拉巴马州1 7
8-87.59379 30.28655 1 8阿拉巴马州
9-87.67400 30.27509 19阿拉巴马州
10-87.81152 30.25790 1 10阿拉巴马州
11-87.88026 30.24644 11阿拉巴马州
12-87.92037 30.24644 1 12阿拉巴马州
13-87.95475 30.24644 1 13阿拉巴马州
14-88.00632 30.24071 1 14阿拉巴马州
15-88.01778 30.25217 1 15阿拉巴马州
16-88.01205 30.26936 1 16阿拉巴马州
17-87.99486 30.27509 1 17阿拉巴马州
18-87.95475 30.27509 118阿拉巴马州
19-87.90318 30.28082 1 19阿拉巴马州
20-87.82870 30.28655 120阿拉巴马州

如果列名不匹配,请使用
by.x
by.y
。就你而言:

merge(FBuse, States, by.x="state", by.y = "FIPS.Code", all = TRUE)
all
参数显示jour join中缺少的任何行。你可以移除它 如果你想“内在”加入

从阿拉巴马州到阿拉巴马州的步骤是相似的。除了你得照顾好帽子。例如,使用
tolower
更改列值

使用dplyr 使用dplyr软件包,您可以将其如下所示:

library(dplyr)

FBuse %>%
  left_join(States, by = c("state" = "FIPS.Code")) %>%
  mutate(Name = tolower(Name)) %>%
  left_join(all_states, by = c("Name" = "region"))
并根据需要从
left\u join
更改为
internal\u join

merge(FBuse, States, by.x="state", by.y = "FIPS.Code", all = TRUE)
library(dplyr)

FBuse %>%
  left_join(States, by = c("state" = "FIPS.Code")) %>%
  mutate(Name = tolower(Name)) %>%
  left_join(all_states, by = c("Name" = "region"))