Звучит так, будто вам нужно перевести данные из длинного формата в широкоформатный.
Вот некоторые фальшивые данные:
set.seed(42)
df <- data.frame(stringsAsFactors = F,
states = sample(state.name, size = 100, replace = T),
people = sample(LETTERS, size = 100, replace = T)
)
Вот подход, который группирует по состоянию, помечает ли ониPerson1 или Person2 и т. д., а затем распределяет их по столбцам
library(tidyr); library(dplyr)
df2 <- df %>%
group_by(states) %>%
mutate(person = paste0("Person", row_number())) %>%
ungroup() %>%
spread(person, people, fill = "")
Вывод:
> df2
# A tibble: 44 x 6
states Person1 Person2 Person3 Person4 Person5
<chr> <chr> <chr> <chr> <chr> <chr>
1 Alabama Q R P P K
2 Alaska R M K L C
3 Arkansas O "" "" "" ""
4 Colorado X U F "" ""
5 Delaware O "" "" "" ""
6 Georgia L N V O ""
7 Hawaii G "" "" "" ""
8 Idaho W L J C ""
9 Illinois V "" "" "" ""
10 Indiana Y Y U "" ""