У меня есть несколько матриц, все они имеют один и тот же тип элементов, но разную длину. Столбцы во всех файлах одинаковы (назовем их A и B), но строки между файлами — это в основном одни и те же элементы, но не всегда.
Вот несколько примеров данных (в виде фреймов данных)
df1 <- data.frame(A = 1:3, B = 3:1)
rownames(df1)=c("alpha","beta","gamma")
df2 <- data.frame(A = 1:5,B = 5:1)
rownames(df2)=c("alpha","beta","delta","gamma","zeta")
df3 <- data.frame(A = 1:7, B = 7:1)
rownames(df3)=c("alpha","beta","delta","gamma","zeta","theta","epsilon")
как вы можете видеть, насколько далеко идут строки, хотя альфа, бета и гамма всегда присутствуют, многие другие не всегда есть
Я хотел бы вычислить 2 вещи: средние значения всех столбцов A и B во всех матрицах, и в идеале это было бы путем создания ave.matr, который имел бы все имена строк и средние / средние значения столбцов A и B
A B
alpha 1 7
beta 2 6
delta 3 5
gamma 4 4
zeta 5 3
theta 6 2
epsilon 7 1
(где указанные выше числа являются средними значениями всех матриц)
а затем матрицу вхождений, позвольте вызвать ее .matr, которая будет подсчитывать количество вхождений каждой строки во всех матрицах, и это должно выглядеть так
A B
alpha 3
beta 3
delta 2
gamma 3
zeta 2
theta 1
epsilon 1
Я начал работать над этим сегодня, но не могу понять, как это сделать.
Я начал с создания списка и матрицы с уникальными именами всех матриц.
list=c(rownames(df1),rownames(df2),rownames(df3))
unique=unique(list)
avematr<-matrix(NA,nrow=length(unique),ncol=2)
и моим следующим шагом было бы сделать одинаковые имена всех матриц. Я пробовал использовать совпадение, но не могу понять, но на данный момент я даже не знаю, лучшая ли это стратегия … И все похожие вопросы связаны со слиянием матриц (это не то, что я хочу делать).
Любая помощь приветствуется
