R 对数据帧执行相关性测试,每行进行多次比较
我有一个67行96列的数据框,其中我复制了行名,其中每一行的值从第48列开始变化,因此我需要对每一行运行一个相关性测试。这就是我的数据框的样子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
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()