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

如何从两个维度不同的data frame中提取指定行并生成多个.csv文件

R 匹配提取数据并分机构输出独立CSV文件方案

前提说明

假设你已将题目中给出的两个数据框分别加载为df1(对应data frame one)和df2(对应data frame two),以下提供两种实现方式,可按需选择。

方式一:tidyverse 实现(代码简洁易维护)

如果尚未安装依赖包,先执行安装:

install.packages("tidyverse")

加载包后执行匹配输出逻辑:

library(tidyverse)

# 遍历所有待匹配的机构名称
walk(df2$distinctOrganizations, function(current_org) {
  # 模糊匹配逻辑:只要df1的name字段包含当前机构名就算匹配,忽略大小写
  # 若需要精确匹配,把下行filter条件替换为 `name == current_org` 即可
  match_result <- df1 %>% 
    filter(str_detect(name, fixed(current_org, ignore_case = TRUE)))
  
  # 仅匹配到至少1条数据时才生成CSV文件,避免生成空文件
  if (nrow(match_result) > 0) {
    # 替换机构名中的非法文件名字符,避免保存失败
    safe_file_name <- str_replace_all(current_org, "[/:*?\"<>|]", "_")
    write_csv(match_result, paste0(safe_file_name, ".csv"))
  }
})

方式二:基础R实现(无需安装额外依赖)

# 提取所有待匹配的机构名列表
org_list <- df2$distinctOrganizations

for (org_name in org_list) {
  # 模糊匹配,忽略大小写,需要精确匹配的话把条件改为 `df1$name == org_name`
  match_rows <- grepl(org_name, df1$name, ignore.case = TRUE)
  match_df <- df1[match_rows, ]
  
  if (nrow(match_df) > 0) {
    # 处理文件名非法字符
    safe_name <- gsub("[/:*?\"<>|]", "_", org_name)
    write.csv(match_df, paste0(safe_name, ".csv"), row.names = FALSE)
  }
}

效果说明

代码运行后,所有匹配到对应数据的机构都会在你当前的R工作目录下生成独立的CSV文件,未匹配到数据的机构不会生成空文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:54:04