【问题标题】:Correlate subsets of data in R关联 R 中的数据子集
【发布时间】:2018-06-13 17:24:33
【问题描述】:

我有这样的数据:

DepVar = c(2,3,5,6,1,3)
Var1 = c(1,7,2,1,1,2)
Var2 = c(0,8,3,3,4,6)    
Group = c("a", "c", "c","b","a","a") 
df = data.frame(Group, DepVar, Var1, Var2) 

我想将 Var1 和 Var2 与 DepVar 列相关联,用于组内的所有观察。所以我的输出将是这样的结构(相关性是组成的):

Group | Var1 | Var2
  a   |  0.6 |  0.2
  b   |  0.3 |  0.1
  c   |  0.4 |  0.4

【问题讨论】:

    标签: r correlation


    【解决方案1】:

    我们可以使用dplyr将数据按Group分组,并通过cor汇总数据集。因为在您的示例数据集b 中只有一个观测值,所以相关系数为NA

    library(dplyr)
    
    df2 <- df %>%
      group_by(Group) %>%
      summarise(Var1 = cor(DepVar, Var1),
                Var2 = cor(DepVar, Var2)) %>%
      as.data.frame()
    df2
    #   Group       Var1       Var2
    # 1     a  0.8660254  0.3273268
    # 2     b         NA         NA
    # 3     c -1.0000000 -1.0000000
    

    如果您有很多列要基于DepVar 进行相同的关联,我们可以使用summarise_at 而不是summarise

    df2 <- df %>%
      group_by(Group) %>%
      summarise_at(vars(-DepVar), funs(cor(DepVar, .))) %>%
      as.data.frame()
    df2
    #   Group       Var1       Var2
    # 1     a  0.8660254  0.3273268
    # 2     b         NA         NA
    # 3     c -1.0000000 -1.0000000
    

    【讨论】:

    • 谢谢!您知道如何轻松地为每组的观察计数添加一列吗?所以它会去 c(3,1,2)
    • @NBC 尝试将 summarise 调用更改为:summarise(Var1 = cor(DepVar, Var1), Var2 = cor(DepVar, Var2), Count = n())
    • 这会导致我的 r GUI 崩溃?不知道为什么
    猜你喜欢
    • 2020-11-11
    • 1970-01-01
    • 2014-11-16
    • 2023-04-03
    • 1970-01-01
    • 2015-11-02
    • 2018-11-24
    • 1970-01-01
    • 2016-07-22
    相关资源
    最近更新 更多