首页 文章

dplyr中分组变量的相关矩阵

提问于
浏览
8

我有一个带有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 链中指定一个列 .

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

1 回答

  • 10

    我们可以使用 do .

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

    NOTE: 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])[]
    

相关问题