r - 使用 dplyr::mutate 计算 R 中的成对相关性

标签 r dplyr correlation

我有一个大型数据框,每行都有足够的数据来使用该数据框的特定列计算相关性,并添加一个包含计算的相关性的新列。

这是我想做的事情的摘要(这个使用 dplyr):

example_data %>%
mutate(pearsoncor = cor(x = X001_F5_000_A:X030_F5_480_C, y = X031_H5_000_A:X060_H5_480_C))

显然,这种方式不起作用,因为我在 pearsoncor 列中只得到 NA's,有人有建议吗?有没有简单的方法可以做到这一点?

最好,

Example data frame

最佳答案

使用 tidyr,您可以分别收集您想要比较的所有 x 和 y 变量。您会得到一个小标题,其中包含您提供的每个组合的相关系数及其 p 值。

library(dplyr)
library(tidyr)

example_data %>%
  gather(x_var, x_val, X001_F5_000_A:X030_F5_480_C) %>% 
  gather(y_var, y_val, X031_H5_000_A:X060_H5_480_C) %>% 
  group_by(x_var, y_var) %>% 
  summarise(cor_coef = cor.test(x_val, y_val)$estimate,
            p_val = cor.test(x_val, y_val)$p.value)

编辑,几年后更新:

library(tidyr)
library(purrr)
library(broom)
library(dplyr)

longley %>%
  pivot_longer(GNP.deflator:Armed.Forces, names_to="x_var", values_to="x_val") %>% 
  pivot_longer(Population:Employed, names_to="y_var", values_to="y_val") %>% 
  nest(data=c(x_val, y_val)) %>%
  mutate(cor_test = map(data, ~cor.test(.x$x_val, .x$y_val)),
         tidied = map(cor_test, tidy)) %>% 
  unnest(tidied)

关于r - 使用 dplyr::mutate 计算 R 中的成对相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48041504/

相关文章:

替换单元格值,匹配列表元素并切换对

r - 如何在R中的巨大数据集中计算两个变量的相关性?

r - cor() 函数的完整.obs

r - ESS 设置制表符空白级别?

r - 无法使用 R markdown 和knitr 将在线图片合并到报告中

r - install.packages : unable to move temporary installation 中的警告

r - 插入符 - 使用 train()、predict() 和 resamples() 的不同结果

使用 dplyr 中的函数输入重命名列

python - Pandas :聚合具有多种功能的多列

python - 如何计算两个数据集之间的斯 PIL 曼等级相关性