我使用的是R 3.1.3,我有這樣的數據;在R中做類似的標識符
id_1 <- c('a','a','b','c','d','e')
id_2 <- c('a','f','f','g','g','e')
我想使數據像;
id_common <- c('1','1','1','2','2','3')
的情況是,我們在第1期和2,因爲在這些時期的分裂或合併不同的管理寄宿生(id_1
和)的數據,我們希望產生一個新的房客標識,使它們相媲美的使用新標識符(id_common
)進行彙總。在這種情況下例如,a
一個部分用b
合併,成爲這些週期之間f
,所以想在週期2治療週期1 a
和b
和a
和f
爲名爲1
一個基團和聚合兩個時期數據在這個水平上進行比較。
當然,id_common
應該是覆蓋兩個期間的最精確的ID(它不應該是id_common <- c('1','1','1','1','1','3')
)。有沒有什麼好主意輕鬆做到這一點?
事實上,我的數據中有兩個以上的時間段,但我認爲我可以輕鬆修改您的建議策略,以適應兩個以上的時間段。
預先感謝您,
跟進;
我想我可以通過下面的代碼做到這一點,但這可能有點混亂。 (我做了標記基於id_common
字符串)。
id_common <- id_1
elements <- unique(id_common)
for (element in elements){
map1 <- vector()
map1 <- id_2[id_1==element]
map2 <- id_1[which(id_2 %in% map1)]
if (setequal(map2,element) == F){
while (setequal(map2,element) == T){
map1 <- vector()
map1 <- id_2[which(id_1 %in% map2)]
map2 <- id_1[which(id_2 %in% map1)]
}
}
id_common[which(id_1 %in% map2)]<- paste(unique(map2),collapse="+")
}
好吧,那我不明白你是什麼真正追求 – akrun