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

在R中构建函数统计Tracking列同行出现的val值及次数

解决方法:找出共享Tracking行的val对及共同出现次数

首先咱们先把你的示例数据用代码还原出来,方便后续操作:

library(tibble)
df <- tibble(
  val = c(36,36,36,36,18,18,1,7,7,7,7,7,20),
  Tracking = c(1,2,3,4,5,6,1,2,3,4,5,6,1)
)

接下来我会用dplyr和tidyr包来实现需求,步骤很清晰:

  1. 整理每个val对应的Tracking集合:把每个val出现过的所有Tracking行号收集成列表,这样能快速知道每个val覆盖了哪些行。
  2. 生成所有不重复的val对:为了避免重复统计(比如(36,7)和(7,36)算同一对),我们只保留val1 < val2的组合。
  3. 计算每个val对的共同Tracking数量:用intersect()函数找出两个val的Tracking集合的交集,交集的长度就是它们共同出现的次数。

完整代码如下:

library(dplyr)
library(tidyr)

# 1. 提取每个val对应的所有Tracking行
val_trackings <- df %>%
  group_by(val) %>%
  summarise(trackings = list(unique(Tracking)), .groups = "drop")

# 2. 生成所有不重复的val组合
val_pairs <- val_trackings %>%
  crossing(val_trackings, .name_repair = ~c("val1", "trackings1", "val2", "trackings2")) %>%
  filter(val1 < val2)

# 3. 计算共同出现次数和对应的Tracking行
result <- val_pairs %>%
  mutate(
    common_count = map2_int(trackings1, trackings2, ~length(intersect(.x, .y))),
    common_trackings = map2(trackings1, trackings2, intersect)
  ) %>%
  select(val1, val2, common_count, common_trackings)

# 查看最终结果
print(result)

运行后你会得到这样的结果:

# A tibble: 10 × 4
    val1  val2 common_count common_trackings
   <dbl> <dbl>        <int> <list>          
 1     1     7            1 <int [1]>       
 2     1    18            0 <int [0]>       
 3     1    20            1 <int [1]>       
 4     1    36            1 <int [1]>       
 5     7    18            2 <int [2]>       
 6     7    20            1 <int [1]>       
 7     7    36            4 <int [4]>       
 8    18    20            0 <int [0]>       
 9    18    36            0 <int [0]>       
10    20    36            1 <int [1]>

比如你提到的36和7,它们共同出现在Tracking的1-4行,所以common_count是4,完全符合预期。如果某个val对没有共同的Tracking行,common_count就会是0,你也可以根据需求过滤掉这些行。要是不需要保留共同的Tracking行列表,只需要次数的话,把select里的common_trackings去掉就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:39:24