📅  最后修改于: 2023-12-03 15:36:12.588000             🧑  作者: Mango
在 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 中数字列的相关矩阵的目的。