Корреляция между несколькими переменными фрейма данных Группировать по другой переменной

Предполагая, что у меня есть кадр данных, как показано ниже (фактический кадр данных имеет миллион наблюдений). Я пытаюсь найти корреляцию между столбцом сигнала и другими столбцами чистой доходности по различным значениям столбца signal_up.

Я пробовал библиотеку «dplyr» и комбинацию функций «group_by» и «summaze». Тем не менее, я могу получить корреляцию только между двумя столбцами, а не несколько столбцов.

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"

введите описание изображения здесь

Всего 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,.))

Это отвечает на ваш вопрос?


NB. Людям будет проще попытаться решить вашу проблему, если вы предоставите воспроизводимый пример, который они могут легко скопировать / вставить вместо добавления его в качестве изображения (см. « Как создать отличный R-воспроизводимый пример» )


Есть идеи?

10000