[英]How to apply a function for Spearman's rank correlation coefficient in R?
[英]Is there an R function for calculating Spearman correlation coefficient for each row in df and writing it as a vector?
我想知道是否有一个 R function 或 package 用于计算 df 中每一行的 Spearman 相关系数并将其写为向量?
首先是可重现的示例:
deviation <- c(5.712840e-03, 5.712840e-02, 5.712840e-01, 5.712940e-01,5.712840e-06)
number <- c(45, 60, 16, 70, 19)
df <- data.frame(deviation, number)
我的 df 有 5 行 2 列。 我想计算每一行的 Spearman 相关性,以便稍后我可以在我的 df 中再添加一个具有 5 个 rho 的列。 我知道有一个计算相关系数的 function cor.test。 但是,它并不能帮助我解决我的任务,因为在它之后我只会得到一个系数
test <- cor.test(deviation, number, method="spearman")
test
它只会给出一个 rho。
请任何人向我推荐一些可以帮助解决此任务的 R 中的 package 或 function。
除了 Ben Bolker 的评论,我猜你正在寻找这样的东西:
cor.test(df$deviation, df$number, method = "spearman")
给
Spearman's rank correlation rho
data: df$deviation and df$number
S = 12, p-value = 0.5167
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.4
为了将估计值放入数据框中,您可以使用broom
package 中的tidy()
:
library(broom)
cor.test(df$deviation, df$number, method = "spearman") %>% tidy()
给出:
# A tibble: 1 x 5
estimate statistic p.value method alternative
<dbl> <dbl> <dbl> <chr> <chr>
1 0.4 12 0.517 Spearman's rank correlation rho two.sided
然后您可以制作 function 并使用它:
cor_fun <- function(df) cor.test(df$deviation, df$number, method = "spearman") %>% tidy()
cor_fun(df)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.