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

如何在R中按多条件统计同一列内CPC的跨行关联出现次数

解决方法

步骤说明

你的核心问题是没有限定仅统计Y02系列CPC与非Y02系列CPC的关联,且没有按专利维度生成跨组配对。以下是修正后的完整流程:

1. 准备数据与定义Y02系列CPC

首先明确Y02系列的CPC范围,同时导入示例数据(如果你的数据框不是y,替换成实际名称即可):

# 示例数据(替换为你的实际数据框)
y <- data.frame(
  patent_id = c(rep("xxxxxx",4), rep("yyyyyy",4)),
  CPC = c("Y02P", "H01M", "G01H", "A02A", "A01B", "Y02E", "Y02T", "Y04S")
)

# 定义Y02系列CPC列表
y02_cpcs <- c("Y02A", "Y02B", "Y02C", "Y02D", "Y02E", "Y02P", "Y02T", "Y02W", "Y04S")

2. 生成Y02与非Y02的专利内配对

按专利分组,拆分Y02和非Y02的CPC,生成跨组配对(确保每个Y02 CPC仅和同专利下的非Y02 CPC关联):

library(dplyr)
library(tidyr)

pair_data <- y %>%
  group_by(patent_id) %>%
  mutate(
    is_y02 = CPC %in% y02_cpcs,
    y02_list = list(CPC[is_y02]),    # 每个专利的Y02类CPC集合
    non_y02_list = list(CPC[!is_y02]) # 每个专利的非Y02类CPC集合
  ) %>%
  slice(1) %>%  # 每个专利仅保留一行,避免重复生成配对
  unnest(y02_list) %>%
  unnest(non_y02_list) %>%
  rename(y02_cpc = y02_list, non_y02_cpc = non_y02_list) %>%
  ungroup()

3. 统计关联次数并找出最高关联CPC

统计每个Y02 CPC对应的非Y02 CPC的共同出现次数,再筛选出每个Y02 CPC关联最多的非Y02 CPC:

# 统计关联次数
count_data <- pair_data %>%
  group_by(y02_cpc, non_y02_cpc) %>%
  summarise(assoc_count = n(), .groups = "drop")

# 找出每个Y02类的最高关联非Y02 CPC
top_assoc <- count_data %>%
  group_by(y02_cpc) %>%
  slice_max(assoc_count, n = 1, with_ties = FALSE) %>% # with_ties=FALSE表示只取一个最高值,若要保留并列可设为TRUE
  ungroup()

# 查看结果
print(top_assoc)

结果示例

针对你的示例数据,运行后会得到:

y02_cpcnon_y02_cpcassoc_count
Y02EA01B1
Y02PH01M1
Y02PG01H1
Y02PA02A1
Y02TA01B1
Y04SA01B1

(注:示例数据中每个Y02 CPC仅对应一个专利的非Y02 CPC,所以次数均为1;若有更多数据,会显示实际关联次数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:40:39