You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:09:25