首页 > 解决方案 > 数据框的多个变量之间的相关性按不同的变量分组

问题描述

假设我有一个如下所示的数据框(实际数据框有数百万个观察值)。我正在尝试通过 signal_up 列的各种值来查找信号列和其他净返回列组之间的相关性。

我尝试过“dplyr”库和“group_by”和“summarize”函数的组合。但是,我只能获得两列而不是多列之间的相关性。

library(dplyr) 
df %>%   
   group_by(Signal_Up) %>%   
   summarize (COR=cor(signal, Net_return_at_t_plus1))

数据和预期结果如下。

数据

在此处输入图像描述

期望的结果

“信号”与 [“Net_return_at_t_plus1”、“Net_return_at_t_plus5”、“Net_return_at_t_plus10”] 之间的相关性

按“Signal_Up”分组

在此处输入图像描述

标签: rdataframestatisticscorrelation

解决方案


也许您可以尝试使用summarise_at在多个列上执行相关性。

在这里,我以iris数据集为例:

library(dplyr)
iris %>% group_by(Species) %>%
  summarise_at(vars(Sepal.Length:Petal.Length), ~cor(Petal.Width,.))

# A tibble: 3 x 4
  Species    Sepal.Length Sepal.Width Petal.Length
  <fct>             <dbl>       <dbl>        <dbl>
1 setosa            0.278       0.233        0.332
2 versicolor        0.546       0.664        0.787
3 virginica         0.281       0.538        0.322

对于您的数据集,您应该尝试以下操作:

library(dplyr)
df %>% group_by(Signal_Up) %>%
  summarise_at(vars(Net_return_at_t_plus1:Net_return_at_t_plus1), ~cor(signal,.))

它回答了你的问题吗?


注意:如果您提供可重现的示例,人们可以更轻松地尝试解决您的问题,他们可以轻松复制/粘贴而不是将其添加为图像(请参阅:如何制作出色的 R 可重现示例


推荐阅读