【问题标题】:Correlation between multiple variables of a data frame Group by a different variable数据框的多个变量之间的相关性按不同的变量分组
【发布时间】:2020-07-03 13:35:57
【问题描述】:

假设我有一个如下所示的数据框(实际数据框有数百万个观察值)。我正在尝试通过 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”分组

【问题讨论】:

    标签: r dataframe statistics correlation


    【解决方案1】:

    也许您可以尝试使用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,.))
    

    它回答了你的问题吗?


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

    【讨论】:

    • 非常感谢@dc37 的解决方案。它工作得很好。下次我将提供可重现的示例而不是图像。谢谢指点。
    • 不客气;)。如果您对此答案感到满意,您可以接受和/或投票,以让人们知道这个问题已经解决。更多信息在这里:stackoverflow.com/help/someone-answers
    • 谢谢@dc37,完成了。只想问是否可以为变量“信号”动态创建类别/组?目前,我必须创建一个变量“Signal_Up”(通过对“信号”变量的值进行四舍五入)来对主要变量“信号”进行分类(类别:-4、-3、...、3、4、5、. .)。类似于 - [A, B, C] 的 Groupby “信号” WHERE A = signal > 1 , B = -1 > signal > 1, C = signal
    • 对不起,你的问题不是很清楚。如果没有可重复的示例,将很难解决您的问题
    • 谢谢,我将把它作为一个单独的问题发布。
    猜你喜欢
    • 1970-01-01
    • 2019-05-14
    • 2021-01-19
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    相关资源
    最近更新 更多