(Я пытался задать этот вопрос ранее сегодня, но позже понял, что слишком упростил вопрос; ответы, которые я получил, были правильными, но я не мог их использовать из-за чрезмерного упрощения проблемы в исходном вопросе. Вот мой ответ. 2 попытка...)
У меня есть кадр данных в R, который выглядит так:
"Timestamp", "Source", "Target", "Length", "Content"
0.1 , P1 , P2 , 5 , "ABCDE"
0.2 , P1 , P2 , 3 , "HIJ"
0.4 , P1 , P2 , 4 , "PQRS"
0.5 , P2 , P1 , 2 , "ZY"
0.9 , P2 , P1 , 4 , "SRQP"
1.1 , P1 , P2 , 1 , "B"
1.6 , P1 , P2 , 3 , "DEF"
2.0 , P2 , P1 , 3 , "IJK"
...
и я хочу преобразовать это в:
"StartTime", "EndTime", "Duration", "Source", "Target", "Length", "Content"
0.1 , 0.4 , 0.3 , P1 , P2 , 12 , "ABCDEHIJPQRS"
0.5 , 0.9 , 0.4 , P2 , P1 , 6 , "ZYSRQP"
1.1 , 1.6 , 0.5 , P1 , P2 , 4 , "BDEF"
...
Пытаясь перевести это на английский язык, я хочу сгруппировать последовательные записи с одним и тем же «Источником» и «Целем» вместе, а затем распечатать одну запись для каждой группы, показывающую StartTime, EndTime и Duration (= EndTime-StartTime) для этой группы, вместе с суммой длин для этой группы и конкатенацией содержимого (все это будут строки) в этой группе.
Значения TimeOffset всегда будут увеличиваться по всему фрейму данных.
Я посмотрел на Melt/Recast и почувствовал, что его можно использовать для решения проблемы, но не мог разобраться в документации. Я подозреваю, что это можно сделать в R, но я действительно не знаю, с чего начать. В крайнем случае я мог бы экспортировать фрейм данных и сделать это, например. Python, но я бы предпочел остаться в R, если это возможно.
Заранее благодарим за любую помощь, которую вы можете предоставить