我有一个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)