如何使用`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
在所有列对之间执行测试。这里的X
和Y
是从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