本文介绍了使用dplyr::mutic计算R中的成对相关性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

以下是我想要做的事情的摘要(这个使用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变量。您将获得一个Tibble,其中包含您提供的每个组合的相关系数及其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)

这篇关于使用dplyr::mutic计算R中的成对相关性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 21:18