按 R 中变量的级别相关

Correlate by levels of a variable in R

我想关联两个变量,并针对第三个变量的水平分别报告输出。

我的数据类似于这个例子:

var1 <- c(7, 8, 9, 10, 11, 12)
var2 <- c(18, 17, 16, 15, 14, 13)
categories <- c(1, 2, 3, 1, 2, 3)

并且我想将类别中的 var1 与 var2 相关联,这样结果将显示类别 1 的 var1 和 var2 的值与类别 2 和类别 3 的相关性。

在 SAS 中,我会这样做:

PROC CORR DATA=x; 
  BY CATEGORY
  VAR VAR1
  WITH VAR2; 
RUN;

您可以将记录放入 data.frame,然后按类别拆分,然后 运行 每个类别的相关性。

sapply(
    split(data.frame(var1, var2), categories), 
    function(x) cor(x[[1]],x[[2]])
)

使用 dplyr

这看起来会更漂亮
library(dplyr)
data.frame(var1=var1, var2=var2, categories=categories) %>%
    group_by(categories) %>%
    summarize(cor= cor(var1, var2))

您也可以使用 by

sapply(by(cbind(var1, var2), categories, FUN=cor),`[`,2)
#1  2  3 
#-1 -1 -1