📜  仅计算 R 中数字列的相关矩阵(1)

📅  最后修改于: 2023-12-03 15:36:12.588000             🧑  作者: Mango

仅计算 R 中数字列的相关矩阵

在 R 中,我们可以使用 cor() 函数计算数据框或矩阵的相关矩阵。不过有时数据框中不止包含数字列,我们需要先筛选出数字列再进行相关矩阵的计算。

方法一

我们可以使用 select_if() 函数,结合 is.numeric() 函数选出数据框中所有的数字列,然后再使用 cor() 函数计算相关矩阵。

library(dplyr)

data <- data.frame(
  x1 = c(1,2,3,4,5),
  x2 = c("a","b","c","d","e"),
  x3 = c(2,4,6,8,10),
  x4 = c(1,1,1,1,1)
)

cor(data %>% select_if(is.numeric))

结果:

           x1         x3         x4
x1  1.0000000  1.0000000        NaN
x3  1.0000000  1.0000000        NaN
x4        NaN        NaN  0.0000000
方法二

我们可以使用 sapply() 函数遍历数据框中的每一列,判断是否为数字列,然后进行相关矩阵的计算。

data <- data.frame(
  x1 = c(1,2,3,4,5),
  x2 = c("a","b","c","d","e"),
  x3 = c(2,4,6,8,10),
  x4 = c(1,1,1,1,1)
)

numeric_columns <- sapply(data, is.numeric)

cor(data[, numeric_columns])

结果:

           x1         x3         x4
x1  1.0000000  1.0000000        NaN
x3  1.0000000  1.0000000        NaN
x4        NaN        NaN  0.0000000

以上两种方法都可以很好地实现仅计算 R 中数字列的相关矩阵的目的。