使用corrplot绘制相关矩阵时出现类型不兼容错误求助
解决corrplot绘制相关矩阵的错误问题
错误根源
你遇到的Can't combine ï.. 和 school错误,是几个问题叠加导致的:
- corrplot输入理解错误:它需要的是相关系数矩阵,而非原始数据框或分组后的tibble,直接传原始数据会因非数值列触发类型冲突报错。
- 数据结构混乱:
- 存在无意义的乱码列
ï..(全为NA) - 大量非数值列(school、state等字符列,pred_ranking这类全空字符串列)
- 部分数值列仍为字符型(比如
weekly_newcases_per100k)
- 存在无意义的乱码列
- 多余分组操作:
group_by后未做聚合计算,返回的分组tibble不仅无用,还会干扰后续处理。
修正步骤
1. 清理数据并转换数值列
先删除无效列,将所有应为数值的字符列转为数值类型:
# 清理无效列+转换数值列 data_clean <- data_complete %>% select(-ï.., -pred_ranking, -actual_ranking) %>% # 删除乱码列和全空列 mutate( positivity_rate = as.numeric(positivity_rate), weekly_newcases_per100k = as.numeric(weekly_newcases_per100k) )
2. 筛选数值列并计算相关系数矩阵
corrplot仅识别数值型相关矩阵,因此先筛选数值列,再计算相关系数(用use = "complete.obs"跳过NA值):
# 筛选数值列并计算相关矩阵 numeric_cols <- select(data_clean, where(is.numeric)) cor_matrix <- cor(numeric_cols, use = "complete.obs")
3. 用corrplot绘制矩阵
将计算好的相关矩阵传入corrplot即可:
corrplot(cor_matrix)
完整修正代码
data_complete <- data[!(data$positivity_rate=="N/A"),] # 数据清理+转换 data_clean <- data_complete %>% select(-ï.., -pred_ranking, -actual_ranking) %>% mutate( positivity_rate = as.numeric(positivity_rate), weekly_newcases_per100k = as.numeric(weekly_newcases_per100k) ) # 计算相关矩阵并绘图 numeric_cols <- select(data_clean, where(is.numeric)) cor_matrix <- cor(numeric_cols, use = "complete.obs") corrplot(cor_matrix)
内容的提问来源于stack exchange,提问作者AC100000
相关产品推荐
相关产品推荐

