2014-05-15 5 views
1

Я изучаю запасы рыбы в открытом океане, пойманные рыбаком. В последнее время я начал измерять расстояние между отдельными рыбами с известными запасами и оценивать, перемещаются ли запасы (> 15 уникальных запасов).Вставка уникальных идентификаторов вместе выпуск

Моя проблема заключается в том, что я сравниваю запасы, в которые я вставляю() имена акций вместе, а иногда и вставляемые вместе идентификаторы будут иметь значение запасов запасов__stock.2 или в других случаях это будет запас.2_stock.1. Мне нужно, чтобы у них был один и тот же уникальный идентификатор, но я не знаю, как лучше всего подойти к этой проблеме в R. Есть ли у кого-нибудь предложения?

Мой фактический фрейм данных большой (> 100 000 строк), что может повлиять на то, как вы отвечаете на вопрос.

Вот код, чтобы создать меньший набор примеров данных:

#making generic ids 
ids <- rep("stock",times=3) 
ids <- paste(ids,1:3, sep=".") 

#making simple example 
tmp <- expand.grid(ids,ids) 
tmp <- tmp[ifelse(tmp$Var1==tmp$Var2,T,F)==F,] 
tmp$dist <- c(1,2,1,4,2,4) 

#comparing stocks 
tmp$both <- paste(tmp$Var1,tmp$Var2, sep="_") 
tmp 
#  Var1 Var2 dist   both 
# 2 stock.2 stock.1 1 stock.2_stock.1 
# 3 stock.3 stock.1 2 stock.3_stock.1 
# 4 stock.1 stock.2 1 stock.1_stock.2 
# 6 stock.3 stock.2 4 stock.3_stock.2 
# 7 stock.1 stock.3 2 stock.1_stock.3 
# 8 stock.2 stock.3 4 stock.2_stock.3 

ответ

2

Если отсортировать пару идентификаторов для каждой строки вы будете в конечном итоге с уникальным комбинированным идентификатором для каждой пары:

tmp$both <- paste(pmin(as.character(tmp$Var1), as.character(tmp$Var2)), 
        pmax(as.character(tmp$Var1), as.character(tmp$Var2)), sep="_") 
tmp 
#  Var1 Var2 dist   both 
# 2 stock.2 stock.1 1 stock.1_stock.2 
# 3 stock.3 stock.1 2 stock.1_stock.3 
# 4 stock.1 stock.2 1 stock.1_stock.2 
# 6 stock.3 stock.2 4 stock.2_stock.3 
# 7 stock.1 stock.3 2 stock.1_stock.3 
# 8 stock.2 stock.3 4 stock.2_stock.3 
Смежные вопросы