1列中2组之间的相关性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1列中2组之间的相关性相关的知识,希望对你有一定的参考价值。

我有一个数据集,其中有450.000列和660行。 前330行是组“ A”,后330行是“ B”。 我想计算A组和B组之间每列的相关性。

到目前为止,我设法:

setkey(df, group)
cor(df["A"]$value, df["B"]$value)

返回第一列的两组之间的相关性。

但是,我想对所有450.000列执行此操作,在该列中,我会获得一个新数据框,其中包含列名和两组之间的相关性。

此外,我必须考虑到group A的第一行(第1行)与group B的第一行(行331),组A的第二行与组B的第二行(行2和行332)相关。 ) 等等。

这里有人知道如何在R中实现吗?

谢谢你们。

答案
# sample data
df = data.frame(a=runif(660,1,10),b=runif(660,1,10),c=runif(660,1,10))

data.frame(corr=sapply(df,function(x) cor(x[1:330],x[331:nrow(df)])))

输出:

         corr
a -0.05902668
b  0.03443904
c -0.09899892
另一答案

这是一个purrr解决方案。 map_df返回一个数据帧。

样本数据:

df<-data.frame(a1=rnorm(660,50,20),a2=rnorm(660,50,20))

并且,每一列中的组(a和b)之间的相关性:

library(purrr)
map_df(df, ~cor(.[1:330],.[331:660]))

退货

# A tibble: 1 × 2
#           a1           a2
#        <dbl>        <dbl>
#1 -0.09949217 -0.008308669
另一答案

尝试遍历所有列。

df<-data.frame(a1=rnorm(660),a2=rnorm(660))
cordf<-numeric()
for(i in 1:ncol(df))cordf[i]<-cor(df[1:330,i],df[331:660,i])
names(cordf)<-names(df) 

cordf包含前330行与后330行之间的相关性,并以数据帧中的原始变量名称命名。

以上是关于1列中2组之间的相关性的主要内容,如果未能解决你的问题,请参考以下文章

R语言计算两组数据变量之间相关系数和P值的简单小例子

第3列中的总和值与第2列和第1列中的唯一值相关

R语言进行相关性分析

如何标准化 0 和 1 之间的 Pearson 相关性?

C++实现日期相关OJ题

数据分析数据分析方法:相关分析 & 群组分析