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

如何统计列表中各元素与其他元素的共现次数(R语言场景)

统计成员共现次数的解决方案

针对你提出的长格式数据统计成员共现次数的需求,这里用R的tidyverse工具链给出具体实现步骤:

1. 加载所需包

library(dplyr)
library(tidyr)

2. 生成每个观测项内的成员两两组合

先对每个沙拉分组,生成组内食材的所有两两不重复组合:

pair_data <- df %>%
  group_by(salad) %>%
  group_modify(~ {
    # 只有当组内食材数≥2时才生成组合
    if(nrow(.x) >= 2) {
      combn(.x$ingredients, 2, simplify = FALSE) %>%
        tibble(ingredient_pair = .) %>%
        unnest_wider(ingredient_pair, names_sep = "_") %>%
        rename(ingredient_A = ingredient_pair_1, ingredient_B = ingredient_pair_2)
    } else {
      tibble()
    }
  }) %>%
  ungroup()

3. 统计组合的共现次数

对生成的组合进行计数:

count_data <- pair_data %>%
  count(ingredient_A, ingredient_B, name = "count")

4. 生成全组合并填充0值

为了包含所有食材组合(包括从未共现的),先生成所有可能的两两不重复组合,再合并计数并将未共现的次数设为0:

# 获取所有食材的唯一列表
all_ingredients <- unique(df$ingredients)

# 生成所有两两不重复组合(避免A-B和B-A重复)
all_pairs <- expand_grid(
  ingredient_A = all_ingredients,
  ingredient_B = all_ingredients
) %>%
  filter(ingredient_A < ingredient_B)

# 合并数据并填充0
results <- all_pairs %>%
  left_join(count_data, by = c("ingredient_A", "ingredient_B")) %>%
  replace_na(list(count = 0)) %>%
  arrange(ingredient_A, ingredient_B)

运行完上述代码后,results就是你需要的包含所有食材组合及共现次数的表格,其中未共现的组合次数会显示为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 10:25:26