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

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

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

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

Данные и желаемый результат приведены ниже.

Данные

enter image description here

Желаемый результат

Корреляция между "сигналом" и "Net_return_at_t_plus1", "Net_return_at_t_plus5", "Net_return_at_t_plus10"]

Группировка по "Signal_Up"

*enter image description here

1 Ответ

0 голосов
/ 23 марта 2020

Возможно, вы можете попытаться использовать 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 воспроизводимый пример )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...