R语言如何找出insurance数据集与totexp相关性最高的5个变量
最优解决方案
基础R实现(无需额外安装依赖)
- 第一步:计算
totexp与全量变量的相关系数,保留变量名属性
# use参数可根据缺失值处理需求调整,pairwise.complete.obs表示成对删除缺失值 cor_vec <- cor(insurance$totexp, insurance, use = "pairwise.complete.obs")[1, ]
cor()对单列和数据集计算会返回1行n列的矩阵,通过[1, ]转换为带变量名的一维向量,不会丢失变量标识。
- 第二步:按相关性绝对值降序排序
# 若只需统计正相关,去掉abs()即可 sorted_cor <- sort(abs(cor_vec), decreasing = TRUE)
- 第三步:提取排除
totexp自身后的前5个最高相关变量
# sorted_cor第一个值是totexp与自身的相关系数1,所以从第2位开始取5个 top5_vars <- sorted_cor[2:6]
直接打印top5_vars即可同时看到变量名和对应相关系数。
tidyverse实现(适合链式处理场景)
如果你习惯使用tidyverse生态,可以用更易读的管道写法,直接得到结构化的结果表:
library(dplyr) library(tidyr) top5_result <- insurance %>% # 计算所有变量和totexp的相关系数 summarise(across(everything(), ~ cor(., totexp, use = "pairwise.complete.obs"))) %>% # 转为长表结构 pivot_longer(everything(), names_to = "变量名", values_to = "相关系数") %>% # 排除totexp自身 filter(变量名 != "totexp") %>% # 按相关性绝对值降序排序 arrange(desc(abs(相关系数))) %>% # 取前5条 slice_head(n = 5)
返回的结果是标准数据框,可直接用于后续可视化、建模等操作。
内容的提问来源于stack exchange,提问作者SosaAlmighty
相关产品推荐
相关产品推荐

