Матрица смежности R - получить долю связей с определенным значением атрибута

У меня есть матрица смежности, отображающая дружеские отношения. Кроме того, у меня есть значения атрибутов для действующих лиц матрицы, хранящиеся в векторах (например, пол). Моя цель - получить процент друзей мужского и женского пола для мужчин и женщин соответственно.

e.g. matrix A
 Actor 1   2    3
[1,]  0    1    1
[2,]  0    0    1
[3,]  1    1    0
.
gender <- c("male", "female", "male")

В приведенном выше примере результат должен выглядеть примерно так:

        male  female
male    50%    50%
female  100%   0%

Благодарю за любые предложения.


person Christoph Schmitt    schedule 09.03.2018    source источник


Ответы (1)


Как насчет этого?

# define matrix
m <- matrix(c(0,0,1,1,0,1,1,1,0),nrow = 3, ncol = 3)

# define gender vector
gender <- c("male", "female", "male")

# find: male-male friendships
mm <- subset.matrix(m, subset = gender == "male", select = gender == "male")
sum(mm)/(dim(mm)[1]*dim(mm)[2])

Что дает вам 1,1 элемент вашей выходной матрицы

Но я немного запутался. Разве матрица не должна быть симметричной, например, проценты_males_friends_with_females равны процентам_females_that_are_friends_with_males?

person Jagge    schedule 09.03.2018