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

使用R基于列值过滤大型dataframe:提取E开头编码对应ID

解决方法

你之前单用filter无法得到结果的原因是filter只能按行筛选符合条件的整行数据,无法将分散在多列中的编码合并为单独一列后匹配规则,搭配tidyr的长宽表转换功能即可实现需求,50万行、200余列的体量在常规配置的设备上运行不会有性能问题。

实现代码

# 加载所需包
library(tidyverse)

# 处理数据,将代码中的「原数据框」替换为你实际的df名称即可
result <- 原数据框 %>%
  # 将除IDs外的所有编码列转为长格式,所有编码值统一落到code列
  pivot_longer(cols = -IDs, names_to = "code_col_type", values_to = "code") %>%
  # 筛选所有以E开头的编码,需要忽略大小写的话可以改成str_starts(code, "E", ignore_case = T)
  filter(str_starts(code, "^E")) %>%
  # 仅保留需要的两列
  select(IDs, code) %>%
  # 可选:如果需要去除重复的ID+编码组合,保留这行即可
  distinct()

效果验证

用你提供的示例数据运行上述代码,输出结果完全匹配你给出的预期结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:15:03