【问题标题】:Correlate by levels of a variable in R与 R 中变量的级别相关
【发布时间】:2015-06-22 17:54:13
【问题描述】:

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

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

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 与类别 2 和类别 3 的 var1 和 var2 值的相关性。

在 SAS 中,我会这样做:

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

【问题讨论】:

    标签: r correlation


    【解决方案1】:

    您可以将记录放入 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))
    

    【讨论】:

    • 或者使用dplyr的前身plyrddply(df, "catagories", summarize, cor = cor(var1, var2))
    【解决方案2】:

    你也可以使用by

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-15
      • 2020-05-01
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多