Я пытаюсь вычислить корреляцию по (group_by) MktDate для всех столбцов в кадре данных с другим столбцом (Security Return).
Я попробовал несколько решений dplyr и не могу заставить пример корреляции работать должным образом, но у меня нет проблем с получением примера, использующего среднее значение для правильной работы.
Это работает, чтобы вычислить среднее значение по указанным столбцам
MyMeanTest <- MyDataTest %>%
filter(MktDate >='2009-12-31') %>%
group_by(MktDate) %>%
summarize_at(c('RtnVol_EM','OCFROI_EM'),mean,na.rm=TRUE)
Это не работает. по сути, я хочу корреляцию для указанных столбцов, сгруппированных по MktDate со столбцом FwdRet_12M. Я получаю следующее сообщение об ошибке -
Ошибка в summarise_impl (.data, точки):
Ошибка оценки: не все аргументы имеют одинаковую длину.
MyCorTest <- MyDataTest %>%
group_by(MktDate) %>%
summarize_at(c('RtnVol_EM','OCFROI_EM'),funs(cor(.,MyDataTest$FwdRet_12M,use="pairwise.complete.obs", "spearman")))
С примером кода выше я должен закончить что-то вроде этого
MktDate, RtnVol_EM, OCFROI_EM ...
Вот пример кода, который должен помочь понять структуру данных и конечную цель.
MyDataTest <- structure(list(MktDate = structure(c(17896, 17896, 17896, 17896,
17927, 17927, 17927, 17927), class = "Date"), FwdRet = c(2, 3,
4, 5, 5, 2, 1, 4), Fact1 = c(10, 30, 20, 15, 12, 25, 26, 28),
Fact2 = c(100, 500, 300, 400, 150, 400, 430, 420)), .Names = c("MktDate",
"FwdRet", "Fact1", "Fact2"), row.names = c(NA, -8L), class = "data.frame")
При выполнении парной корреляции, сгруппированной по дате на этом наборе данных, должен получиться следующий результат:
MktDate,Fact1,Fact2
12/31/18,.2,.4
1/31/19,.4,-.8