与R中变量的级别相关联

时间:2015-06-22 17:54:14

标签: r correlation

我想关联两个变量,并将输出分别报告给第三个变量的级别。

我的数据与此示例类似:

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;

2 个答案:

答案 0 :(得分:1)

您可以将记录放入data.frame中,然后按照cateogies进行拆分,然后为每个类别运行相关。

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))

答案 1 :(得分:0)

您也可以使用by

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