2015-06-22 74 views
2

我想关联两个变量,并分别报告第三个变量水平的输出。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) 

而且我希望在类别中关联与VAR2 VAR1,这样的结果将显示VAR1和VAR2的值的相关性为1类分开从2类和3类

在SAS,我会做:

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

回答

1

你可以把你的记录到一个data.frame然后由美食分裂ogies,然后运行每个类别的关联。

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

或者使用'dplyr'的前身''plyr' ddply(DF“分类“,总结,cor = cor(var1,var2))'。 – Kevin

0

你也可以使用by

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