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

R语言:如何按Type和Date分组计算不同ID的revenue相关性?

解决方案

首先需要明确:你的数据中每个type+date分组下,每个ID仅对应1个revenue值,而计算两个变量的相关性至少需要2个及以上的配对观测值,因此按type+date分组无法得到有效相关系数(仅单个数据点时,cor()函数会返回NA)。

如果你的实际需求是按type分组,计算同一类型下不同ID的revenue时间序列相关性(即基于多个共同日期的观测值计算),可以用以下方法实现:

代码实现

library(tidyverse)

# 1. 按type分组,将不同ID的revenue按日期对齐为宽格式
type_cor_result <- df %>%
  group_by(type) %>%
  pivot_wider(names_from = ID, values_from = revenue) %>%
  # 2. 对每个type计算ID间的相关矩阵
  summarise(cor_matrix = list(cor(select(., -date), use = "pairwise.complete.obs"))) %>%
  # 3. 将相关矩阵转换为长格式表格
  mutate(cor_df = map(cor_matrix, ~ as.data.frame(.x) %>% 
                        rownames_to_column("row_ID") %>% 
                        pivot_longer(-row_ID, names_to = "col_ID", values_to = "correlation"))) %>%
  unnest(cor_df) %>%
  # 转换ID为数值类型(可选)
  mutate(across(c(row_ID, col_ID), as.numeric))

# 可选:转换为以ID为行/列的宽格式表格
type_cor_wide <- type_cor_result %>%
  pivot_wider(names_from = col_ID, values_from = correlation, id_cols = c(type, row_ID))

结果说明

  • 对于type=1,ID1和ID2有2个共同日期(2023-02-01、2023-03-01)的观测值,计算得到的相关系数为-1(完全负相关)。
  • type=2仅包含ID3,无其他ID可计算相关性,因此无对应结果。

如果确实需要按type+date分组,你需要补充数据,确保每个分组下每个ID有至少2个观测值,否则无法得到有意义的相关系数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:53:23