如何使用`cor.test`来关联特定列?

我有以下数据例如:如何使用`cor.test`来关联特定列?

A<-rnorm(100) 

B<-rnorm(100)

C<-rnorm(100)

v1<-as.numeric(c(1:100))

v2<-as.numeric(c(2:101))

v3<-as.numeric(c(3:102))

v2[50]<-NA

v3[60]<-NA

v3[61]<-NA

df<-data.frame(A,B,C,v1,v2,v3)

正如你可以看到DF具有1 NA第5列中,和2 NA在塔6 现在我想使col1和3的相关矩阵上一方面,col2,4,5,6另一方面。使用R中的相应功能:

cor(df[ , c(1,3)], df[ , c(2,4,5,6)], use="complete.obs") 

# B v1 v2 v3

# A -0.007565203 -0.2985090 -0.2985090 -0.2985090

# C 0.032485874 0.1043763 0.1043763 0.1043763

这是有效的。然而,我想要估计和p.value,因此我切换到cor.test。

cor.test(df[ ,c(1,3)], df[ , c(2,4,5,6)], na.action = "na.exclude")$estimate 

这并不为'X' 和 'Y' 的工作必须具有相同的长度。 这个错误实际上是在数据中有或没有NA的情况下发生的。似乎cor.test不理解(不像cor)关联特定列的请求。有没有解决这个问题的方法?

回答:

您可以使用outer在所有列对之间执行测试。这里的XY是从df扩展的数据帧,每个由8列组成。

outer(df[, c(1,3)], df[, c(2,4,5,6)], function(X, Y){ 

mapply(function(...) cor.test(..., na.action = "na.exclude")$estimate,

X, Y)

})

您还可以得到相同的形式输出为cor

  B   v1   v2   v3 

A 0.07844426 0.01829566 0.01931412 0.01528329

C 0.11487140 -0.14827859 -0.14900301 -0.15534569

以上是 如何使用`cor.test`来关联特定列? 的全部内容, 来源链接: utcz.com/qa/257397.html

回到顶部