У меня есть вопрос о функции do () в dplyr.
Давайте использовать следующий пример набора данных:
set.seed(2409)
N=5
T=10
id<- rep(LETTERS[1:N],each=T)
time<-rep(1:T, times=N)
x<-runif(N*T,0,100)
y<-runif(N*T,0,100)
df<-data.frame(id,time,x,y); rm(N,T,time,id,x,y)
Теперь я хочу запустить функцию (т.е. корреляцию) для всех идентификаторов. Для этого я использую group_by () и do () из пакета dplyr.
library(dplyr)
cor <- df %>%
group_by(id) %>%
do(cors=cor(.[3:4]))
Пока все хорошо. Я получаю вывод, используя просто
cor$cors
[[1]]
x y
x 1.00000000 -0.09895815
y -0.09895815 1.00000000
[[2]]
x y
x 1.0000000 -0.4127625
y -0.4127625 1.0000000
[[3]]
x y
x 1.0000000 -0.5516935
y -0.5516935 1.0000000
[[4]]
x y
x 1.000000 -0.219373
y -0.219373 1.000000
[[5]]
x y
x 1.0000000 -0.1789057
y -0.1789057 1.0000000
Но как я могу получить мои выходы, названные идентификатором вместо нумерации? Итак, что я хочу, это:
[[A]]
x y
x 1.00000000 -0.09895815
y -0.09895815 1.00000000
[[B]]
x y
x 1.0000000 -0.4127625
y -0.4127625 1.0000000
[[C]]
x y
x 1.0000000 -0.5516935
y -0.5516935 1.0000000
[[D]]
x y
x 1.000000 -0.219373
y -0.219373 1.000000
[[E]]
x y
x 1.0000000 -0.1789057
y -0.1789057 1.0000000
Большое спасибо!