R语言求助:从大数据框选特定组计算相关性并绘制多折线图
R语言:筛选特定组计算相关性并绘制折线图
1. 准备工作(加载工具包)
如果还没安装tidyverse包,先执行安装命令——它包含了数据处理和绘图的核心工具,新手友好:
install.packages("tidyverse") library(tidyverse)
2. 筛选目标数据组
从你的数据框中筛选出需要的BO、OM1、OM2、OM3组,替换df为你实际的数据框名称:
# tidyverse语法(更直观) target_df <- df %>% filter(Type %in% c("BO", "OM1", "OM2", "OM3")) # 基础R语法(无需额外装包) target_df <- df[df$Type %in% c("BO", "OM1", "OM2", "OM3"), ]
3. 计算OM1、OM2、OM3的相关性
相关性计算需要先把数据转成宽格式(每个组单独成一列),再计算相关矩阵:
# 转换为宽格式 wide_df <- target_df %>% pivot_wider(names_from = Type, values_from = Da) # 计算OM1/OM2/OM3的相关矩阵(自动忽略缺失值) cor_matrix <- cor(wide_df[, c("OM1", "OM2", "OM3")], use = "complete.obs") print(cor_matrix) # 如果需要两两的显著性检验,比如OM1和OM2 cor_test_OM1_OM2 <- cor.test(wide_df$OM1, wide_df$OM2, na.action = na.omit) print(cor_test_OM1_OM2)
4. 绘制BO基线与OM系列的折线图
用ggplot2绘制折线图,保留原数据的长格式即可,注意先把日期转换为R能识别的格式:
ggplot(target_df, aes(x = as.Date(Date, format = "%d/%m/%Y"), y = Da, color = Type)) + geom_line(size = 1) + # 设置折线粗细 geom_point(size = 2) + # 添加数据点,提升可读性 labs(x = "日期", y = "Da值", title = "BO基线与OM系列时间序列对比") + theme_minimal() + # 简洁美观的主题 scale_color_manual( values = c("BO" = "black", "OM1" = "#E63946", "OM2" = "#457B9D", "OM3" = "#1D3557"), labels = c("BO(基线)", "OM1", "OM2", "OM3") ) # 自定义颜色和标签,突出基线
注意事项
- 替换代码中的
df为你实际的数据框名称 - 如果数据中有缺失值,
use = "complete.obs"和na.action = na.omit会自动跳过这些行 - 日期格式如果不是
dd/mm/yyyy,需要修改as.Date里的format参数
内容的提问来源于stack exchange,提问作者lummmm
相关产品推荐
相关产品推荐

