dplyr中分组变量的相关矩阵

时间:2015-03-26 03:40:33

标签: r dplyr

我有一个带有50个数字列的分组数据框(使用dplyr),使用其中一列将其拆分成组。我想计算所有非分组列和一个特定列之间的相关矩阵。

mtcars数据集的示例:

data(mtcars)
cor(mtcars[,2:11], mtcars[,2])

返回每个帆船的里程与其他变量之间的相关性列表。

但是,我想说,我希望计算每组气瓶的相同相关性,例如:

library(dplyr)
mtcars <-
    mtcars %>%
    group_by(cyl)

我该怎么做?我在想像

这样的东西
mtcars %>%
    group_by(cyl) %>%
    summarise_each(funs(cor(...))

但由于我不知道如何在...链中指定列,我不知道该放在dplyr中的内容。

相关Linear model and dplyr - a better solution?的答案与@ akrun的答案非常相似。此外,在交叉验证时:https://stats.stackexchange.com/questions/4040/r-compute-correlation-by-group还有其他解决方案使用的包不是dplyr

1 个答案:

答案 0 :(得分:10)

我们可以使用do

library(dplyr)
mtcars %>% 
       group_by(cyl) %>%
       do(data.frame(Cor=t(cor(.[,3:11], .[,3]))))

注意: t部分由@Alex

提供

或者

library(data.table)
d1 <- copy(mtcars)
setnames(setDT(d1)[, as.list(cor(.SD, .SD[[1]])) , cyl, 
                            .SDcols=3:11],  names(d1)[2:11])[]