У меня есть матрица, которая представляет мобильность между различными рабочими местами:коллапса/агрегировать некоторые части матрицы смежности одновременно на строках и столбцах
jobnames <- c("job 1","job 2","job 3","job 4","job 5","job 6","job 7")
jobdat <- matrix(c(
5, 5, 5, 0, 0, 5, 5,
5, 5, 2, 5, 5, 1, 5,
1, 5, 5, 5, 0, 0, 1,
1, 0, 5, 5, 8, 0, 1,
0, 5, 0, 0, 5, 5, 1,
0, 0, 5, 5, 0, 5, 5,
0, 1, 0, 0, 5, 1, 5
),
nrow = 7, ncol = 7, byrow = TRUE,
dimnames = list(jobnames,jobnames
))
Это трактуется как направленная, взвешенная матрица смежности в социальной сети анализ. Направление сети от строк до столбцов: Таким образом, мобильность определяется как переход от строки задания к столбцу задания. Диагональ имеет значение, так как можно изменить на ту же работу в другой фирме.
мне нужно свернуть эту матрицу в соответствии с прообразом списка , содержащего индекс рабочих мест, которые должны быть объединены:
group.list <- list(grp1=c(1,2) ,grp2 =c(3,4))
Теперь, так как это матрица смежности, это немного отличается от других 'ответы о том, как свернуть матрицу, которую я нашел здесь и где-то еще. Коллапс должен быть одновременным как по строкам, так и по столбцам. И некоторые работы не сгруппированы вообще. Так что результат в данном примере должно быть так:
group.jobnames <- c("job 1 and 2","job 3 and 4","job 5","job 6","job 7")
group.jobdat <- matrix(c(
20,12,5,6,10,
7,17,8,0,2,
5,0,5,5,1,
0,10,0,5,5,
1,0,5,1,5
),
nrow = 5, ncol = 5, byrow = TRUE,
dimnames = list(group.jobnames,group.jobnames
))
В этом примере группы два первых рабочих мест, а затем следующий два, но в моих фактических данных это может быть любая комбинация (индексов) рабочих мест, а также любые количество рабочих мест в каждой группе. Таким образом, работа [1,7] может быть одной группой, а работа [2,3,6] может быть другой группой, в то время как работа 4 или 5 не была сгруппирована. Или любая другая комбинация.
Спасибо за ваше время,
Я не могу повторить group.jobdat учитывая группы, которые вы предоставляете в group.list и код построения group.jobdat выдает ошибку. – lmo
Слишком жаль, что я не могу исправить это до завтрашнего утра, когда снова нахожусь на своем компьютере с R. – emilBeBri
Звучит неплохо. Дайте мне знать, когда вы это сделаете, и я посмотрю. – lmo