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组之间的相关性的主要内容,如果未能解决你的问题,请参考以下文章