У меня есть кадр данных, который содержит помеченных лиц на нескольких сайтах с нескольких интервалов выборки. Смотрите пример ниже:Слияние пар данных в последовательности в R
> df
Tag Site Interval Ind_ID
1 507 Golden 7 1
2 507 Golden 8 1
3 552 Golden 2 1
4 552 Golden 1 1
5 847 Golden 4 1
6 847 Golden 6 1
8 847 Golden 5 1
9 847 Golden 3 1
31 541 Golden 1 1
33 541 Golden 3 1
34 541 Golden 4 1
35 541 Golden 7 1
36 541 Golden 6 1
37 541 Golden 5 1
39 810 Golden 7 1
40 810 Golden 8 1
41 840 Golden 7 1
42 840 Golden 8 1
43 840 Golden 3 1
44 840 Golden 2 1
То, что я пытаюсь сделать, это отдельные меченые особи по интервалу, который я сделал с помощью этого цикл:
for (i in 1:nlevels(factor(df$Interval))){
I<-subset(df,Interval==levels(factor(df$Interval))[i])
assign(paste("Interval_", i, sep = ""), I)}
А затем объединить кадры данных парами в последовательность, которую я сейчас делаю, используя этот код:
IPl2<-merge(Interval_1, Interval_2, by=c("Tag", "Site", "Ind_ID"))
IPl3<-merge(Interval_2, Interval_3, by=c("Tag", "Site", "Ind_ID"))
IPl4<-merge(Interval_3, Interval_4, by=c("Tag", "Site", "Ind_ID"))
IPl5<-merge(Interval_4, Interval_5, by=c("Tag", "Site", "Ind_ID"))
IPl6<-merge(Interval_5, Interval_6, by=c("Tag", "Site", "Ind_ID"))
IPl7<-merge(Interval_6, Interval_7, by=c("Tag", "Site", "Ind_ID"))
IPl8<-merge(Interval_7, Interval_8, by=c("Tag", "Site", "Ind_ID"))
Я уверен, что есть более эффективный способ сделать это. Кроме того, я постоянно добавляю данные в набор данных (т. Е. Больше интервалов), и я бы хотел избежать необходимости редактировать код при каждом добавлении новых данных. Есть идеи?
Возможно, вы захотите изучить split(). – Thomas