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

如何在R数据框中提取含指定关键词的相邻字符串计数?

解决方案

可以用tidyverse工具链实现需求,步骤简洁高效:

  • 筛选出包含关键词director的行
  • 将宽格式的word列转为长格式,保留行标识和计数n
  • 针对每组(原数据的行),找到director的位置,提取其前后相邻的元素
  • 整理成目标格式

具体代码如下:

library(tidyverse)

df <- tibble(word1 = c("director", "John", "Peter", "financial", "setting", "board"),
             word2 = c("board", "seat", "outsider", "independent", "irrelevant", "dissident"),
             word3 = c("independent", "director", "flaw", "yes", "oversight", "John"), 
             word4 = c("outsider", "independent", "dependence", "poorly", "material", "seat"),
             n = c(6, 3, 2, 2, 1, 1))

director_analysis <- df %>%
  # 筛选含director的行
  filter(rowSums(select(., starts_with("word")) == "director") > 0) %>%
  # 添加行号用于分组
  mutate(row_id = row_number()) %>%
  # 转为长格式
  pivot_longer(cols = starts_with("word"), names_to = "word_col", values_to = "word") %>%
  # 按行分组,标记与director相邻的元素
  group_by(row_id, n) %>%
  mutate(
    is_director = word == "director",
    is_adjacent = lag(is_director, default = FALSE) | lead(is_director, default = FALSE)
  ) %>%
  filter(is_adjacent) %>%
  # 整理成目标格式
  transmute(test1 = "director", test2 = word) %>%
  ungroup() %>%
  select(test1, test2, n)

# 查看结果
director_analysis

运行后得到的结果与预期完全一致:

# A tibble: 6 × 3
  test1     test2       n
  <chr>     <chr>   <dbl>
1 director  board       6
2 director  independent 6
3 director  outsider    6
4 director  John        3
5 director  seat        3
6 director  independent 3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:54:28