Я получил данные в CSV.из отчета, полученного от Salesforce.Каждая строка представляет транзакцию и человека, который работал над транзакцией.Во многих случаях в одной и той же транзакции работало более 1 человека, поэтому в этих случаях встречаются повторяющиеся строки, в которых указываются дата, отметка времени, местоположение, офис и т. Д. , за исключением имени человека.
Я хочу, чтобы каждая строка представляла одну транзакцию, и в случае, когда над одной транзакцией работало несколько человек, будет создан новый столбец для захвата имени другого человека.
Это то, чтоданные выглядят так:
Trans_ID | Name
================
1 | Dom Toretto
2 | Brian Oconnor
3 | Letty Garcia
3 | Mia Toretto
4 | Brian Oconnor
4 | Dom Toretto
4 | Letty Garcia
4 | Jesse
Это то, что я хочу:
Trans_ID | Name | Name2 | Name3 | Name4
===============================================================
1 | Dom Toretto | Letty Garcia | |
2 | Brian Oconnor | | |
3 | Letty Garcia | Mia Toretto | |
4 | Brian Oconnor | Dom Toretto | Letty Garcia | Jesse
Я хочу сделать это в R, но если это проще в SQL или Excel, это будет работать тоже.
Спасибо!
РЕДАКТИРОВАТЬ Поэтому я попытался использовать case when и lag in r, но теперь у меня возникла новая проблема удаления строк, которые не являютсядольше необходимо.Это также может быть неправильный подход.Есть идеи?
df<- data.frame(trans_id = c(1,2,3,3,4,4,4,4),
Name = c("Dom Toretto","Brian Oconnor","Letty Garcia","Mia Toretto","Brian Oconnor","Dom Toretto","Letty Garcia","Jesse"))
df %>%
mutate(
Name2 = case_when(
trans_id == lag(trans_id) ~ lag(Name)
),
Name3 = case_when(
trans_id == lag(trans_id, 2) ~ lag(Name, 2)
),
Name4 = case_when(
trans_id == lag(trans_id, 3) ~ lag(Name, 3)
))