gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:52:35 25 4
gpt4 key购买 nike

我有以下数据示例:

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 在第 5 列中有 1 个 NA,在第 6 列中有 2 个 NA。现在我想一方面制作 col1 和 3 的相关矩阵,另一方面制作 col2,4,5,6 的相关矩阵。在 R 中使用 cor 函数:

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

关于r - 如何使用 `cor.test` 关联特定列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30573509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com