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

R语言按时间分组生成列全配对并应用函数的tidy实现求助

可行解决方案

先加载依赖包:

library(tidyverse)

核心实现代码:

# 定义自定义运算函数
fun1 <- function(x, y) {
  sum(x, y)
}

# 计算流程
result <- data %>%
  # 按time分组,将每组数据嵌套为列表列
  nest(.by = time) %>%
  mutate(
    # 逐组处理嵌套数据
    pair_result = map(data, \(grp_df) {
      # 生成本组所有数值列的全量两两组合
      expand.grid(firm1 = names(grp_df), firm2 = names(grp_df)) %>%
        rowwise() %>%
        # 对每对列应用自定义函数
        mutate(value = fun1(grp_df[[firm1]], grp_df[[firm2]])) %>%
        ungroup()
    })
  ) %>%
  # 展开计算结果,自动关联对应time值
  unnest(pair_result) %>%
  # 调整列名、顺序匹配预期输出
  select(t = time, firm1, firm2, value)

实现逻辑说明

  • 用nest(.by = time)按时间分组隔离数据,避免跨分组计算错误
  • 每组内独立生成列名的笛卡尔积配对,逐行调用自定义函数计算两列的运算结果
  • 展开结果时自动保留对应分组的time字段,完全符合tidyverse的语法规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:45:03