【问题标题】:Correlation between groups组间相关性
【发布时间】:2020-01-20 02:37:07
【问题描述】:

我有一个数据框 df。我需要找到组间 ColE 和 ColF 之间的相关性。

   df = structure(list(ColA = c("A", "A", "A", "B", "B"), ColB = c("L", 
   "L", "L", "L", "K"), ColC = c("Sup1", "Sup1", "Sup2", "Sup1", 
   "Sup1"), ColD = c("Jan", "Feb", "Mar", "Apr", "May"), ColE = c(56, 
   59, 68, 45, 45), ColF = c(58, 60, 90, 65, 59)), row.names = c(NA, 
   -5L), class = c("tbl_df", "tbl", "data.frame"))
   ColA    ColB      ColC      ColD      ColE       ColF
    A       L         Sup1      Jan       56         58
    A       L         Sup1      Feb       59         60
    A       L         Sup2      Mar       68         90
    B       L         Sup1      Apr       45         65
    B       K         Sup1      May       45         59

对于 ColA、ColB 之间的组,我需要找到相关性,因此输出应该是这样的

   New ColA     New ColB       Correlation coeff
      A            L                   ---
      B            L                   ---
      B            K                   ---

同样,如果我需要在其他组中找到相关系数,例如

     New ColA     New ColB      New ColC    Correlation coeff
      A            L               Sup1               ---
      A            L               Sup2               ---
      B            L               Sup1               ---   
      B            K               Sup1               --- 

有没有办法解决这个问题?

【问题讨论】:

  • 你的一些变量似乎是分类的,那么你将如何估计这些变量的相关系数?
  • 抱歉,实际上我需要为这些组关联 Col E 和 Col F 之间的关系?我已经编辑了我的问题
  • 您能否通过在您的问题中发布dput() 的结果来发布您的数据样本?

标签: r


【解决方案1】:

使用dplyr,您可以:

df %>%
 group_by(ColA, ColB) %>%
 summarise(corr_coeff = cor(ColE, ColF))

  ColA  ColB  corr_coeff
  <chr> <chr>     <dbl>
1 A     L         0.983
2 B     K        NA    
3 B     L        NA  

请注意,对于两组没有系数计算,因为它们只有一个值。

【讨论】:

  • 完美。假设我有#DIV/0!或 0 是我的数据。如何排除?
  • 你可以先过滤掉。或者改造它。这取决于你的目标。
【解决方案2】:

带有data.table

> data.table(df)[,j=list(kor=cor(ColE,ColF)),by=list(ColA,ColB)]

   ColA ColB      kor
1:    A    L 0.982613
2:    B    L       NA
3:    B    K       NA

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 2017-01-11
    • 2018-03-31
    • 2023-03-27
    • 2014-03-22
    • 1970-01-01
    • 2013-01-09
    • 2020-05-24
    • 2018-07-01
    相关资源
    最近更新 更多