Используя data.table , загрузите ваши данные:
> library(data.table)
> df = data.table('Step_Name' = c('p-1', 'p-2', 'defer','p-1','p-3','buy','p-4','defer'), 'Session_ID' = c(rep(1,3),rep(2,3),rep(3,2)))
> df
Step_Name Session_ID
1: p-1 1
2: p-2 1
3: defer 1
4: p-1 2
5: p-3 2
6: buy 2
7: p-4 3
8: defer 3
Добавьте идентификатор номера строки, перезапуская для каждого нового Session_ID
.
> df[, id := seq_len(.N), by = Session_ID]
Приведите вашу таблицу данных:
> df_final = dcast(df, Session_ID ~ id, value.var = 'Step_Name')
И ваш желаемый результат:
> df_final
Session_ID 1 2 3
1: 1 p-1 p-2 defer
2: 2 p-1 p-3 buy
3: 3 p-4 defer <NA>
NB: Это зависит от ваших данных в порядке в Session_ID
.