Я пытаюсь найти "группу" (id3) на основе двух переменных (id1, id2):
df = data.frame(id1 = c(1,1,2,2,3,3,4,4,5,5),
id2 = c('a','b','a','c','c','d','x','y','y','z'),
id3 = c(rep('group1',6), rep('group2',4)))
id1 id2 id3
1 1 a group1
2 1 b group1
3 2 a group1
4 2 c group1
5 3 c group1
6 3 d group1
7 4 x group2
8 4 y group2
9 5 y group2
10 5 z group2
Например, id1=1 относится к a и b из id2. Но id1=2 также связан с так как принадлежат к одной группе (a id3=group1). Но поскольку id1=2 и id1=3 делят id2=c, также id1=3 принадлежит этой группе (id3=1). Значения кортежа ((1,2),('a','b','c')) появляются нигде, поэтому никакая другая строка не принадлежит этой группе (которая в общем случае помечена как group1).
Моя идея состояла в том, чтобы создать таблицу на основе id3 которая впоследствии была бы заполнена в цикле.
solution = data.frame(id3= c('group1', 'group2'),id1=NA, id2=NA)
group= 1
for (step in c(1:1000)) { # run many steps to make sure to get all values
solution$id1[group] = # populate
solution$id2[group] = # populate
if (fully populated) {
group = group +1
}}
Я изо всех сил пытаюсь увидеть, как заселить.
Отказ от ответственности: я задал подобный вопрос здесь, но использование имен в id2 привело к тому, что многие люди id2 мне на нечеткие строковые процедуры в R, которые здесь не нужны, поскольку существует точное решение. Я также включаю в этот пост весь код, который я пробовал с тех пор.