dplyr中分组变量的相关矩阵

Ale*_*lex 9 r dplyr

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

mtcars数据集的示例:

data(mtcars)
cor(mtcars[,2:11], mtcars[,2])
Run Code Online (Sandbox Code Playgroud)

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

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

library(dplyr)
mtcars <-
    mtcars %>%
    group_by(cyl)
Run Code Online (Sandbox Code Playgroud)

我该怎么做?我在想类似的东西

mtcars %>%
    group_by(cyl) %>%
    summarise_each(funs(cor(...))
Run Code Online (Sandbox Code Playgroud)

但我不知道该放什么,...因为我不知道如何在dplyr链中指定一列.

相关: 线性模型和dplyr - 更好的解决方案?答案与@ akrun的答案非常相似.此外,在交叉验证上:https://stats.stackexchange.com/questions/4040/r-compute-correlation-by-group还有其他解决方案,使用的包不是dplyr.

akr*_*run 11

我们可以用do.

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

注意: 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])[]
Run Code Online (Sandbox Code Playgroud)

  • 继续更新这方面的工作非常出色,太棒了。 (2认同)