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

如何基于指定时间范围条件计算数据相关性?

基于条件时间范围计算数据框变量相关性

核心思路

  1. 从DF_CONDITION提取唯一年份,为每个年份生成包含自身及后续两年的时间序列,合并为无重复的目标时间范围集合
  2. 分别筛选DF1和DF2中落在目标时间范围内的数据
  3. 对筛选后的对应变量计算相关性

分步实现代码

1. 处理目标时间范围

先去重DF_CONDITION中的年份,生成每个年份对应的3年时间序列,再合并为无重复的目标年份集合:

# 提取DF_CONDITION中的唯一年份
unique_years <- unique(DF_CONDITION$Date)

# 生成每个年份对应的3年时间序列(当前年+后两年)
target_years <- unlist(lapply(unique_years, function(y) y:(y+2)))

# 去重,避免重复年份(比如2001的序列包含2002,2002的序列也包含2002)
target_years <- unique(target_years)

2. 筛选符合时间条件的数据

分别筛选DF1和DF2中年份在目标集合内的行:

# 筛选DF1数据
DF1_filtered <- DF1[DF1$Year1 %in% target_years, ]

# 筛选DF2数据
DF2_filtered <- DF2[DF2$Year2 %in% target_years, ]

3. 计算对应变量的相关性

假设DF1的COMP1-COMP4分别对应DF2的COMP6-COMP9,提供两种计算方式:

方式1:逐个计算单变量相关性

# 计算各对应变量对的相关性
cor_COMP1_COMP6 <- cor(DF1_filtered$COMP1, DF2_filtered$COMP6)
cor_COMP2_COMP7 <- cor(DF1_filtered$COMP2, DF2_filtered$COMP7)
cor_COMP3_COMP8 <- cor(DF1_filtered$COMP3, DF2_filtered$COMP8)
cor_COMP4_COMP9 <- cor(DF1_filtered$COMP4, DF2_filtered$COMP9)

# 整理为结果表格输出
data.frame(
  变量对 = c("COMP1-COMP6", "COMP2-COMP7", "COMP3-COMP8", "COMP4-COMP9"),
  相关性 = c(cor_COMP1_COMP6, cor_COMP2_COMP7, cor_COMP3_COMP8, cor_COMP4_COMP9)
)

方式2:批量计算相关性矩阵

如果需要更全面的相关性结果,可以合并变量列后计算矩阵:

# 提取对应变量列(确保顺序匹配)
vars_df1 <- DF1_filtered[, paste0("COMP", 1:4)]
vars_df2 <- DF2_filtered[, paste0("COMP", 6:9)]

# 重命名DF2变量列,方便识别来源
colnames(vars_df2) <- paste0(colnames(vars_df2), "_DF2")

# 计算相关性矩阵
cor_matrix <- cor(cbind(vars_df1, vars_df2))

# 提取仅对应变量对的相关性结果
cor_pairs <- cor_matrix[1:4, 5:8]
rownames(cor_pairs) <- paste0("COMP", 1:4)
colnames(cor_pairs) <- paste0("COMP", 6:9)

print(cor_pairs)

示例结果说明

基于你提供的示例数据,DF_CONDITION的唯一年份是2001、2002、2003、2004,生成的目标时间范围是2001-2006,但示例数据中最大年份为2004,因此实际筛选后的数据包含2001-2004的所有行,相关性计算将基于这些数据完成。

内容的提问来源于stack exchange,提问作者Li4991

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:43:13