Как преобразовать фрейм данных с фиктивными переменными в матрицу смежности? - PullRequest
0 голосов
/ 06 января 2020

У меня есть фрейм данных с несколькими фиктивными переменными.

df <- data.frame(A=c(1,0,1,0,1),B=c(1,1,1,0,0),C=c(0,1,0,1,1))

На самом деле, число «1» в каждой строке представляет возникновение переменных, поэтому фрейм данных является чем-то вроде фрейма данных совместного вхождения.

Я надеюсь перевести его в матрицу смежности.

, A, B, C

A, 3,2,1

B, 2,3,1

C, 1,1,3

Как я могу это сделать?

обновить

Я думаю здесь приходит мой ответ.

1 Ответ

0 голосов
/ 06 января 2020

Я думаю, что мне не хватает простого способа сделать это, но один вариант с базой R outer может быть

cols <- names(df)
apply_fun <- function(x, y) sum(df[x] == 1 & df[y] == 1)
mat <- outer(cols,cols, Vectorize(apply_fun))
row.names(mat) <- cols
colnames(mat) <- cols

mat
#  A B C
#A 3 2 1
#B 2 3 1
#C 1 1 3
...