R 对数据帧执行相关性测试,每行进行多次比较

R 对数据帧执行相关性测试,每行进行多次比较,r,pandas,statistics,R,Pandas,Statistics,我有一个67行96列的数据框,其中我复制了行名,其中每一行的值从第48列开始变化,因此我需要对每一行运行一个相关性测试。这就是我的数据框的样子 Sample P1 P2 P3 P4 P5 F1 F2 F3 F4 F5 AS1_1 0.474181 0 2.541416 0.931405 3.679168 0.0442751 0.0582329 0.0399943 0.0397949 0.0389702 AS1_2 0

我有一个67行96列的数据框,其中我复制了行名,其中每一行的值从第48列开始变化,因此我需要对每一行运行一个相关性测试。这就是我的数据框的样子

   Sample   P1  P2  P3  P4  P5  F1  F2  F3  F4  F5
AS1_1   0.474181    0   2.541416    0.931405    3.679168    0.0442751   0.0582329   0.0399943   0.0397949   0.0389702
AS1_2   0.474181    0   2.541416    0.931405    3.679168    0.0648574   0.0733045   0.0599727   0.0542742   0.0795781
AS1_3   0.474181    0   2.541416    0.931405    3.679168    0.0418037   0.0447637   0.0329602   0.0366981   0.0391166
AS1_4   0.474181    0   2.541416    0.931405    3.679168    0.0842857   0.106061    0.0741478   0.0655408   0.0960092
RDA_1   0.426323    0.186972    0.371125    0.353353    0   0.183682    0.236717    0.204065    0.21347 0.158275
RDA_2   0.426323    0.186972    0.371125    0.353353    0   0.762271    0.157697    0.711849    0.773907    0.162249
RDA_3   0.426323    0.186972    0.371125    0.353353    0   0.65933 0.555187    0.716199    0.614248    0.134922
RDA_4   0.426323    0.186972    0.371125    0.353353    0   0.0757848   0.0806026   0.0850364   0.0956196   0.0527733
RDA_5   0.426323    0.186972    0.371125    0.353353    0   0.0505727   0.0709043   0.0481335   0.0389085   0.036532
例如AS1_*和RDA_*的行在第五列之前具有相同的值,然后不同,我需要找到第一(P1..P5)5列与第二个五列(F1..F5)之间的每一行的相关性,因为值不同,所以要找到良好的相关性并绘制它

到目前为止,我已经转置了数据帧,并尝试在R中使用以下脚本,但它给我带来了错误

x=read.table('df',sep='\t',header=T)
x=t(x)


   for(gene in colnames(x))
{

gnamex <- paste0(gene,"_Beta")
gnamey <- paste0(gene,"_FPKM")

plot(x[,gnamex],x[,gnamey],main=paste0(gene,"\ncor= ",round(cor(x[,gnamex],x[,gnamey]), digits=3),"\np< ",round(cor.test(x[,gnamex],x[,gnamey])$p.value,digits=3)),xlab="Beta values",ylab="FPKM")
abline(lm(x[,gnamex]~x[,gnamey]), col="red")
lines(lowess(x[,gnamex],x[,gnamey]), col="blue")

}
任何帮助或更好的解决方案都会非常好,python和R都非常感谢

多谢各位

genes_idx = pd.MultiIndex.from_tuples(df.Sample.str.split('_').values.tolist())

P = df.filter(like='P').set_index(genes_idx)
P


我假设行'RDA_5'列'P5'等于0.0656101是一个输入错误?问题是您在尝试使用变量来选择列时附加了
\u Beta
\u FPKM
,但这些后缀与实际列名不再匹配。因此,您正在选择未定义的列名。一般来说,这是没有意义的,因为即使它没有弄乱列标识,您也只是复制了同一列的两个副本,并试图对其进行绘图和分析。我认为您要做的是采用行名和列名,而不仅仅是列名。但即使是方形的,也只能起作用。@piRSquared是的,对不起,这是一个打字错误。@Hack-R,谢谢你的建议,如果你能给我一点指导,那就太好了
genes_idx = pd.MultiIndex.from_tuples(df.Sample.str.split('_').values.tolist())

P = df.filter(like='P').set_index(genes_idx)
P
F = df.filter(like='F').set_index(genes_idx)
F
P.T.corrwith(F.T.set_index(P.columns)).unstack()