Не уверен, что мой заголовок хорошо передает мой вопрос.Это будет иметь больше смысла, если вы сможете прочитать этот пример.Я хотел бы объединить 2 кадра данных, которые представляют собой 2-х волновой продольный обзор.Кадр данных Time1 имеет больше участников, чем кадр данных Time2, поскольку не все вернулись для опроса Time 2.Некоторые переменные были измерены в оба раза, но есть другие, доступные только в каждом фрейме данных.Например,
> d1
ID v1 v2 T v3
1 1 A E 1 6
2 2 B D 1 7
3 3 C C 1 8
4 4 D B 1 9
5 5 E A 1 10
> d2
ID v1 v2 T v4
1 1 F A 2 100
2 3 G B 2 101
3 5 H C 2 102
Я бы хотел создать длинный набор данных, объединив их, сохранив только участников, чьи данные доступны одновременно, и сохранив все переменные.Я хочу, чтобы объединенные данные выглядели как d3:
> d3
ID v1 v2 T v3 v4
1 1 A E 1 6 100
2 3 C C 1 8 101
3 5 E A 1 10 102
4 1 F A 2 6 100
5 3 G B 2 8 101
6 5 H C 2 10 102
Код, который я использовал, был таким, как показано ниже.
d4<- merge(d1, d2, by=intersect(names(d1), names(d2)), all= TRUE)
d4<-d4[d4$ID %in% d4$ID[duplicated(d4$ID)],]
d4<- arrange(d4, T, ID)
d4[1:3, 6] <- d4[4:6, 6]
d4[4:6, 5] <- d4[1:3, 5]
Я получил то, что хотел, но это требует времени и подвержено ошибкам.Я думаю, что должны быть более эффективные способы сделать это.Может ли кто-нибудь помочь?