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

在R语言中从推文数据框生成去重的国家关联网络边列表

解决方案

问题背景

你有一组推文数据框,通过中日美三类关键词匹配文本,当前生成边列表的代码仅返回首个匹配项,需要实现以下三点:

  1. 每个匹配的国家生成单独行
  2. 将匹配关键词替换为对应国家名称
  3. 同一国家的多匹配项去重

实现代码

首先构建关键词-国家映射表,方便后续替换操作:

library(tidyverse)

# 定义关键词向量(保留你的原始定义)
chnID <- c("china", "beijing", "中国", "日中")
jpnID <- c("japan", "tokyo")
usaID <- c("united states", "washington", "アメリカ", "米国", "日米")

# 构建关键词到国家名称的映射表
keyword_map <- tibble(
  keyword = c(chnID, jpnID),
  country = c(rep("China", length(chnID)), rep("Japan", length(jpnID)))
)

# 示例推文数据框
usaTW <- data.frame(text = "beijing, tokyo, & washington to discuss economic concerns this weekend in japan.")

接下来处理推文数据,生成符合要求的边列表:

# 筛选包含中日关键词的推文(保留你的逻辑)
usaPD <- usaTW %>%
  filter(str_detect(text, paste(keyword_map$keyword, collapse = "|")))

# 生成目标边列表
usaEL <- usaPD %>%
  # 提取文本中所有匹配的中日关键词
  mutate(match_keywords = str_extract_all(text, paste(keyword_map$keyword, collapse = "|"))) %>%
  # 将每个匹配关键词拆分为单独行
  unnest(match_keywords) %>%
  # 关联映射表,把关键词替换为对应国家名称
  left_join(keyword_map, by = c("match_keywords" = "keyword")) %>%
  # 按来源国和目标国去重,同一国家仅保留一条边
  distinct(source = "United States", country, .keep_all = FALSE) %>%
  # 重命名列以符合边列表格式
  rename(dest = country)

代码说明

  • 需求1实现:用str_extract_all提取所有匹配的关键词,再通过unnest将每个关键词拆分为单独行
  • 需求2实现:通过预定义的keyword_map映射表,将匹配到的关键词替换为标准国家名称
  • 需求3实现:用distinct按source和country去重,确保同一国家仅保留一条关联记录

输出结果

运行后usaEL的结果为:

source  dest
1 United States China
2 United States Japan

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:10:35