Мне нужны корреляции временных рядов в сгруппированном фрейме данных. Вот примерный набор данных:
x <- cbind(expand.grid(type = letters[1:4], time = seq(1:4), kind = letters[5:8]), value = rnorm(64)) %>% arrange(type, time, kind)
, который производит 64 строки переменных type
, time
, kind
и value
.
Я хочу корреляцию временных рядов значения для каждого kind
сгруппированы по type
. Представьте, что каждая комбинация type
и time
представляет собой упорядоченный вектор из 4 значений. Я группирую по type
и time
, затем упорядочиваю по kind
, затем удаляю kind
.
y <- x %>% group_by(type) %>% arrange(type, time, kind) %>% select(-kind)
Затем я могу сгруппировать y
по типу и времени и вложить так, чтобы все значения находятся вместе в переменной данных, перегруппируются только по type
и создают новую переменную, которая является опережением data
.
z <- y %>% group_by(type, time) %>% nest(value) %>% group_by(type) %>% mutate(ahead = lead(data))
Теперь я хочу запустить mutate(R = cor(data, ahead))
, но не могу кажется, получить правильный синтаксис.
Я также пытался mutate(R = cor(data$value, ahead$value))
и mutate(R = cor(data[1]$value, ahead[1]$value))
, но безрезультатно.
Ошибка, которую я получаю от cor
: supply both 'x' and 'y' or a matrix-like 'x'
.
Как ссылаться на данные и переменные впереди как векторы для запуска с cor
?
В конечном счете, я ищу 16-строчный фрейм данных со столбцами type
, time
и R
, где R - это одно значение корреляции.
Спасибо за внимание.