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

如何基于数值变量条件创建二部图投影(含多配对需求)

自定义二分图投影实现带条件的城市间网络构建

要实现带差值条件的城市间网络,igraph自带的bipartite_projection无法满足自定义连接规则,因此我们手动处理配对逻辑,步骤如下:

  • 按个体分组,生成该个体所有访问记录的无序两两配对(包含同一城市的多次访问组合)
  • 筛选配对中两个记录的important_variable差值≤0.5的组合
  • 整理边列表并构建igraph网络

示例代码

1. 加载依赖包

library(dplyr)
library(tidyr)
library(igraph)

2. 构造示例数据集

包含同一访客多次访问同一城市的场景:

df <- tibble(
  source = c("A", "A", "A", "B", "B", "B"),
  target = c("北京", "北京", "上海", "广州", "深圳", "深圳"),
  important_variable = c(1.2, 1.5, 1.6, 2.0, 2.4, 2.6)
)

3. 生成符合条件的城市配对边列表

# 按个体分组,生成所有无序两两配对并筛选条件
edges_df <- df %>%
  group_by(source) %>%
  mutate(row_id = row_number()) %>%  # 给每个访问记录加唯一标识,避免重复配对
  crossing(., .name_repair = ~c("source", "target1", "iv1", "row_id1", "source2", "target2", "iv2", "row_id2")) %>%
  filter(row_id1 < row_id2) %>%  # 保留无序对,避免重复边(如北京-上海和上海-北京)
  mutate(diff_iv = abs(iv1 - iv2)) %>%
  filter(diff_iv <= 0.5) %>%  # 筛选差值条件
  select(
    city1 = target1,
    city2 = target2,
    iv_city1 = iv1,
    iv_city2 = iv2,
    iv_diff = diff_iv,
    visitor = source
  ) %>%
  ungroup()

# 构建无向igraph网络
city_network <- graph_from_data_frame(edges_df, directed = FALSE)

预期输出

边列表结果

# A tibble: 5 × 6
  city1 city2 iv_city1 iv_city2 iv_diff visitor
  <chr> <chr>    <dbl>    <dbl>   <dbl> <chr>  
1 北京  北京       1.2      1.5     0.3 A      
2 北京  上海       1.2      1.6     0.4 A      
3 北京  上海       1.5      1.6     0.1 A      
4 广州  深圳       2.0      2.4     0.4 B      
5 深圳  深圳       2.4      2.6     0.2 B      

网络属性说明

  • 节点为所有出现的城市:北京、上海、广州、深圳
  • 每条边包含以下属性:
    • iv_city1/iv_city2:配对双方的important_variable值
    • iv_diff:两者的差值
    • visitor:生成该边的访客ID

如果需要合并同一城市对的多条边(如北京-上海的两条边),可添加聚合逻辑,例如:

edges_aggregated <- edges_df %>%
  group_by(city1, city2) %>%
  summarize(
    avg_iv_diff = mean(iv_diff),
    visitors = paste(unique(visitor), collapse = ","),
    .groups = "drop"
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:02:38