【发布时间】:2016-02-20 00:25:49
【问题描述】:
我想使用 dplyr 查找 data.frame 中各个列的排名相关性。
我确信这个问题有一个简单的解决方案,但我认为问题在于我在使用 cor 函数时无法在 dplyr 中的 summarise_each_ 中使用两个输入。
对于以下df:
df <- data.frame(Universe=c(rep("A",5),rep("B",5)),AA.x=rnorm(10),BB.x=rnorm(10),CC.x=rnorm(10),AA.y=rnorm(10),BB.y=rnorm(10),CC.y=rnorm(10))
我想获得所有 .x 和 .y 组合之间的排名相关性。我在下面的函数中看到的问题????
cor <- df %>% group_by(Universe) %>%
summarize_each_(funs(cor(.,method = 'spearman',use = "pairwise.complete.obs")),????)
我希望 cor 只包含相关对:每个 Universe 的 AA.x.AA.y 、 AA.x,BB.y, ...。
请帮忙!
【问题讨论】:
-
基本解决方案可以是
lapply(split(df[-1], df$Universe), function(x) cor(x[grepl("\\.x", names(x))], x[grepl("\\.y", names(x))], method = 'spearman', use = "pairwise.complete.obs")) -
这很好用,谢谢。但我有一个非常大的数据集,使用 dplyr 方法绝对是更可取的。我自己的基本 R 解决方案需要很长时间..
-
相关的question 和
data.table解决方案,如果您对不同的库开放 -
您希望输出是什么样的?