基于另一个数据帧子集数据帧,在R中具有相同的行名和列名

时间:2014-04-01 23:05:57

标签: r list dataframe subset

我使用Hmisc的rcorr()进行多次相关(大约500 x 40大数据帧)。此命令返回一个列表,但我只将列表中需要的内容保存为数据帧。因此,我有两个数据框,一个是Pearson rho,另一个是p值。数据帧之间的所有内容都是相同的,但是单元格值。

AdiASigFatCorr <- rcorr(as.matrix(AdiASigFat), type=c("pearson"))
AdiASigFatCorrP <- as.data.frame(AdiASigFatCorr$P)
AdiASigFatCorrR <- as.data.frame(AdiASigFatCorr$r)

现在,我想只保留p值

AdiASigFatCorrP(p值):

            pre_ISI.kg_  pre_ISI.mmol pre_Weight
pre_BMP3    0.0002293035 0.0006511392 0.043833537
pre_CES1    0.0604775694 0.0791677406 0.076397970
pre_CETP    0.0336650792 0.0641110946 0.361560818

AdiASigFatCorrR(rho值):

              pre_ISI.kg_  pre_ISI.mmol pre_Weight
pre_BMP3      0.6838388    0.6459200 -0.4148415
pre_CES1     -0.3887246   -0.3653443  0.3685230
pre_CETP      0.4349413    0.3837841 -0.1948498

如果相应的p值<1,我想将rho值子集化。 0.05。

我已经阅读了很多并尝试使用subset()等许多不同的方法,但我完全卡住了..

如果为此目的制作了其他方法/包,请赐教。

谢谢!

1 个答案:

答案 0 :(得分:0)

调用rho矩阵corr.rho和p值矩阵corr.p,您可以使用简单的向量运算来查找corr.rho的所有值,使corr.p < 0.05。如果数据不是矩阵形式,则可以将其强制转换为as.matrix

的矩阵
> corr.rho[corr.p < 0.05]
[1]  0.6838388  0.4349413  0.6459200 -0.4148415