例如数据见下文.假设我有一个包含两列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)
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)