R: Идентифицировать идентификатор в фрейме данных, где изменяется назначение группы

#r #dataframe

#r #фрейм данных

Вопрос:

У меня есть фрейм данных с тремя столбцами: идентификатор и два групповых назначения, к которым принадлежит каждый идентификатор. Групповые назначения в двух столбцах кластера почти одинаковы для всех идентификаторов, за исключением нескольких. Однако код назначения группы изменяется, но идентификаторы по-прежнему принадлежат той же группе. Я хотел бы идентифицировать идентификатор, назначение группы которого изменяется между двумя столбцами кластера.

В приведенном ниже примере данных я хотел бы идентифицировать идентификатор 79, который принадлежит группе 68 в столбце «cluster.n1» и группе 62 в столбце «cluster.cur». С другой стороны, идентификаторы 82 и 83 принадлежат группе 70 в «cluster.n1» и группе 69 в «cluster.cur». Но они все еще находятся в одной группе.

Это мои данные:

 structure(list(ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 
29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 
45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 
61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 
77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 
93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 
107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 
120, 121), cluster.n1 = c(1L, 2L, 3L, 4L, 5L, 1L, 6L, 7L, 5L, 
7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 16L, 17L, 18L, 
19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 
32L, 33L, 34L, 35L, 35L, 36L, 37L, 38L, 39L, 40L, 40L, 13L, 41L, 
42L, 43L, 44L, 45L, 46L, 32L, 44L, 47L, 48L, 43L, 49L, 15L, 50L, 
51L, 52L, 53L, 54L, 55L, 56L, 57L, 58L, 59L, 60L, 61L, 62L, 63L, 
64L, 65L, 66L, 67L, 68L, 69L, 54L, 70L, 70L, 35L, 71L, 72L, 73L, 
74L, 73L, 75L, 76L, 68L, 77L, 78L, 79L, 80L, 81L, 82L, 83L, 84L, 
31L, 85L, 86L, 87L, 87L, 88L, 89L, 90L, 91L, 91L, 92L, 93L, 94L, 
95L, 95L, 91L, 96L, 92L, 95L, 97L, 98L), cluster.cur = c(1L, 
2L, 3L, 4L, 5L, 1L, 6L, 7L, 5L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 
14L, 15L, 16L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 
26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 35L, 36L, 37L, 
38L, 39L, 40L, 40L, 13L, 41L, 42L, 43L, 44L, 45L, 46L, 32L, 44L, 
47L, 48L, 43L, 49L, 15L, 50L, 51L, 52L, 53L, 54L, 55L, 56L, 57L, 
58L, 59L, 60L, 61L, 62L, 63L, 64L, 65L, 66L, 67L, 62L, 68L, 54L, 
69L, 69L, 35L, 70L, 71L, 72L, 73L, 72L, 74L, 75L, 67L, 76L, 77L, 
78L, 79L, 80L, 81L, 82L, 83L, 31L, 84L, 85L, 86L, 86L, 87L, 88L, 
89L, 90L, 90L, 91L, 92L, 93L, 94L, 94L, 90L, 95L, 91L, 94L, 96L, 
97L)), row.names = c(NA, -121L), class = "data.frame")
  

Комментарии:

1. Я изо всех сил пытаюсь понять, почему идентификаторы 82, 83, … находятся в одной группе. На каком правиле это основано? .. Я полагаю with(mydata, ID[which(cluster.n1!=cluster.cur)]) , это не то, что вы хотите?

2. Это результаты кластеризации, n1 кластеризуется до 98 групп, в настоящее время до 97 групп. Почти все назначения групп остаются неизменными, но идентификатор группы меняется. Я хочу определить, какие исходные идентификаторы изменили свое групповое назначение.