【发布时间】:2021-01-27 11:15:26
【问题描述】:
我有许多矩阵,它们都具有相同类型的元素但长度不同。所有文件中的列都是相同的(我们称它们为“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")
正如您所看到的,即使“alpha”、“beta”和“gamma”总是存在,但许多其他行并不总是存在
我想计算两件事: 所有矩阵中所有 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
(上面的数字是所有矩阵的平均值)
然后是一个出现矩阵,我们称它为occur.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)
我的下一步是使所有矩阵的行名相同。我尝试了比赛,但我无法弄清楚,但此刻我什至不知道这是否是最好的策略...... 并且所有类似的问题都与合并矩阵有关(这不是我想要做的)。
非常感谢任何帮助
【问题讨论】: