У меня есть набор данных, подобный следующему.С субъектами, которые со временем объединяются в группы
df <- data.frame("group" = c("A", "A", "A+1","A+1", "A+1", "B","B+1","B+1"),
"id" = c("id1", "id2", "id1", "id2", "id3", "id5","id5","id1"),
"time" = c(1,1,3,3,3,2,5,5),
"Val" = c(10,10,10,10,10,12,12,12),
"groupid" = c("A", "A", "A","A", "A", "B","B","B"))
Моя конечная цель - добавить все значения, группирующиеся по идентификатору.
Моя проблема заключается в том, что, например, при присоединении новой группы субъекта к группе «А» группа «А + 1», когда субъект «id3» присоединяется в момент времени 3, все мои наблюдения дублируются («А+1 "включают" id1 "и" id2 ". Следовательно, я не могу сделать свою сумму.
В сумме я хотел бы удалить дублированные" идентификаторы "на основе идентификаторов" идентификатора группы ".
окончательный вариантdf должен выглядеть следующим образом
final <- data.frame("group" = c("A", "A", "A+1", "B","B+1"),
"id" = c("id1", "id2", "id3", "id5","id1"),
"time" = c(1,1,3,2,5),
"Val" = c(10,10,10,12,12),
"groupid" = c("A", "A", "A", "B","B"))
Заранее большое спасибо за вашу помощь
Последующий вопрос
У меня также есть противоположный случай, когда некоторыесубъект со временем покидает группу. Набор данных выглядит примерно так:
df2 <- data.frame("group" = c("A", "A", "A","A_1", "A_1", "B","B","B_1"),
"id" = c("id1", "id2", "id3", "id2", "id3", "id5","id1","id1"),
"time" = c(1,1,1,3,3,2,2,5),
"Val" = c(10,10,10,10,10,12,12,12),
"groupid" = c("A", "A", "A","A", "A", "B","B","B"))
В этом случае один субъект «id1» покидает «группу A», которая становится группой «A_1», где только «id2»и «id3» являются членами. Точно так же «id5» покидает группу B, которая становится «B_1» с только id1 в качестве члена.
То, что я хотел бы иметь в окончательном наборе данных, - это идентификация групп противоположного типа, котораядолжен выглядеть примерно так:
final2 <- data.frame("group" = c("A", "A", "A","A_1", "B","B","B_1"),
"id" = c("id1", "id2", "id3", "id1", "id5","id1","id5"),
"time" = c(1,1,1,3,2,2,5),
"Val" = c(10,10,10,10,12,12,12),
"groupid" = c("A", "A", "A","A", "B","B","B"))
. При этом "A_1" и "B_1 "указывают только на предметы," id1 "и" id5 "соответственно, которые покинули группу, а не на оставшихся.
Есть предложения по этому подходу?
Заранее благодарю за помощь