Предполагая, что у вас есть ограниченное количество уникальных значений location_id для каждого worker_id, вы можете сделать что-то вроде этого:
library(dplyr)
library(tidyr)
df <- data_frame(
worker_id = c(1, 1, 2, 2, 3, 3),
location_id = c(1, 2, 3, 4, 1, 4)
)
df %>%
group_by(worker_id) %>%
mutate(location_number = row_number()) %>%
spread(location_number, location_id, sep = '_')
# A tibble: 3 x 3
# Groups: worker_id [3]
worker_id location_number_1 location_number_2
* <dbl> <dbl> <dbl>
1 1 1 2
2 2 3 4
3 3 1 4
Я использовал некоторые выдуманные данные, поскольку ваши данные не представляются вашей проблемой, ижелаемый вывод.Это решение будет работать, но выдает столько столбцов, сколько максимальное количество уникальных местоположений, в котором находится один работник.