R:对于列中的每个唯一值,在其他列中搜索相应的字符串并追加

Han*_*nie 1 r

例如数据见下文.假设我有一个包含两列A,B的data.frame.A由代码组成.代码链接到B列,其中包含人们可以居住的区域.一个代码可以对应多个区域.我希望创建一个文件,其中每一行都包含一个唯一的代码,后面是填充了代码所属区域的列.

示例数据

        A       B
      <dbl>   <chr>
 1     1483 De Rijp
 2     1483 De Rijp
 3     1483 De Rijp-Gracht
 4     1483 De Rijp-Gracht
 5     1423 Huiswaard
 6     1423 Huiswaard-Noord
 7     1423 Huiswaard-Zuid
 8     1811 Centrum
 9     1811 Centrum
10     1811 Centrum
11     1811 Centrum
12     1811 Overdie
13     1811 Overdie
14     1811 Overdie
15     1811 Overdie
Run Code Online (Sandbox Code Playgroud)

我想最终得到什么:

       code   area    area_1          area_2         area_3  area_4
      <dbl>   <chr>   <chr>           <chr>          <chr>   <chr>
 1     1483 De Rijp   De Rijp-Gracht
 2     1423 Huiswaard Huiswaard-Noord Huiswaard-Zuid
 3     1811 Centrum   Overdie
Run Code Online (Sandbox Code Playgroud)

我知道你可以获得独特的代码unique(df$A),但之后我不知道从哪里开始,什么是合适的.

编辑输入数据:

structure(list(A = c(1483, 1483, 1483, 1483, 1423, 1423, 1423, 
1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811), B = c("De Rijp", 
"De Rijp", "De Rijp-Gracht", "De Rijp-Gracht", "Huiswaard", "Huiswaard-Noord", 
"Huiswaard-Zuid", "Centrum", "Centrum", "Centrum", "Centrum", 
"Overdie", "Overdie", "Overdie", "Overdie")), .Names = c("A", 
"B"), row.names = c(NA, -15L), class = c("tbl_df", "tbl", "data.frame"
))
Run Code Online (Sandbox Code Playgroud)

Ony*_*mbu 5

  library(tidyverse)
  dat%>%unique()%>%
     group_by(A)%>%
     mutate(grp=paste0("area_",1:(n())))%>%
     spread(grp,B)%>%
     ungroup()
# A tibble: 3 x 4
      A    area_1          area_2         area_3
* <dbl>     <chr>           <chr>          <chr>
1  1423 Huiswaard Huiswaard-Noord Huiswaard-Zuid
2  1483   De Rijp  De Rijp-Gracht           <NA>
3  1811   Centrum         Overdie           <NA>
Run Code Online (Sandbox Code Playgroud)