如何通过字符变量值对R语言的data.table进行子集筛选
data.table按指定code_id筛选行的方案
因为你已经将code_id设为表的键,优先推荐使用索引查询的方案,在大数据量下性能表现远好于普通向量匹配:
- 方案1(最高效,适配大规模数据):直接利用键的索引做二元查找,
nomatch = 0可以过滤掉不存在的目标值对应的空行
# 定义需要保留的目标code列表 target_codes <- c("x05ZX", "x05qb", "x05td") # 利用键索引快速筛选 result_dt <- UniqueCodes[target_codes, nomatch = 0]
如果你的表没有提前设置键,也可以手动指定匹配列,写法如下:
result_dt <- UniqueCodes[target_codes, on = .(code_id), nomatch = 0]
- 方案2(写法简单,适配中小数据量):用
%in%运算符做普通匹配
result_dt <- UniqueCodes[code_id %in% c("x05ZX", "x05qb", "x05td")]
如果需要忽略大小写匹配,可以先将两部分内容统一转为大写/小写再匹配:
result_dt <- UniqueCodes[tolower(code_id) %in% tolower(c("x05ZX", "X05qb", "X05td"))]
内容的提问来源于stack exchange,提问作者Jim Maas
相关产品推荐
相关产品推荐

