【问题标题】:R: Highlight cells in the cor() table that have a correlation coefficient greater than a thresholdR:突出显示 cor() 表中相关系数大于阈值的单元格
【发布时间】:2019-04-06 16:12:11
【问题描述】:

在数据帧上调用 cor() 函数 R 时,会返回一个矩阵,其中包含与数据帧中的成对元素相关联的相关系数。但似乎没有任何选项可以标记值高于某个阈值的系数(如 STATA 的 *)

有没有间接的方法让 R 做到这一点?

例如,

M = matrix(rnorm(20*5, mean = 10, sd = 3), 20, 5)
symnum(cor(M), cutpoints =  c(0.1, 0.5),
    symbols = c( '', '*', '**'),
    legend = TRUE,
     corr = TRUE)

返回一个没有相关系数的矩阵; ''、'*' 或 '**' 已替换值。我想生成一个包含相关系数的表格,同时如果系数值大于0.1,则在单元格中显示'*',如果系数值大于0.5,则显示'**'

【问题讨论】:

  • 你读过?symnum吗?你能准确定义你想要的输出应该是什么吗?
  • 我已经编辑了问题。

标签: r correlation


【解决方案1】:

symnum 返回一个与相关矩阵相同维度的矩阵,在本例中为co。这段代码做了 3 件事,计算相关矩阵并将其四舍五入为 2 位。然后使用paste 连接从symnum 返回的数字和重要性。只有一个问题:paste 将矩阵简化为向量,因此我们必须重新设置矩阵形式。幸运的是,矩阵和粘贴都使用列顺序,即元素按列排序。

co <- cor(M)
co <- round(co, 2)
co[upper.tri(co, diag=TRUE)] <- ''
s <- symnum(co)
noquote(matrix(paste(co, s), ncol=ncol(co)))
attr(s, 'legend')

【讨论】:

    【解决方案2】:

    一个选项可能是corrplot 包。

    corrplot(cor(M), method='number')
    

    【讨论】:

      猜你喜欢
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      • 2023-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多