У меня есть датафрейм в R, похожий на приведенный ниже.
a b c d e f
0 1 1 0 0 0
1 1 1 1 0 1
0 0 0 1 0 1
1 0 0 1 0 1
1 1 1 0 0 0
База данных большая, охватывает более 100 столбцов и 5000 строк и содержит все двоичные файлы (0 и 1). Я хочу построить перекрытие между каждым и каждым столбцом в R. Что-то похожее на приведенное ниже. Этот перекрывающийся кадр данных будет представлять собой квадратную матрицу с равным количеством строк и столбцов, которая будет равна количеству столбцов в 1-м кадре данных.
a b c d e f
a 3 2 2 2 0 2
b 2 3 3 3 0 1
c 2 3 3 1 0 1
d 2 3 1 3 0 3
e 0 0 0 0 0 0
f 2 1 1 3 0 3
Каждая ячейка второго кадра данных заполняется количеством случаев, когда в строке и столбце есть 1 в первом кадре данных.
Я подумываю о создании пустой матрицы следующим образом:
df <- matrix(ncol = ncol(data), nrow = ncol(data))
colnames(df) <- names(data)
rownames(df) <- names(data)
.. и итерации по каждой ячейке этой матрицы, используя команду apply, считывающую соответствующее имя строки (скажем, x) и имя столбца (скажем, y) и запускающую функцию, подобную приведенной ниже.
summation <- function (x,y) (return (sum(data$x * data$y)))
Проблема в том, что я не могу найти имя строки и имя столбца в функции применения. Любая помощь будет оценена.
Любой более эффективный способ, чем я думаю, более чем приветствуется.