R通过字符变量的值对data.table进行子集

Posted

技术标签:

【中文标题】R通过字符变量的值对data.table进行子集【英文标题】:R subsetting a data.table by values of a character variable 【发布时间】:2022-01-05 14:42:49 【问题描述】:

我正在尝试对 data.table 进行子集化,这里是小示例,但需要做更大的示例。

我有 dt 和唯一的列,code_id 是关键:

> UniqueCodes
                 code_id
    1:                  
    2:             .....
    3: 10073011000001107
    4: 10073911000001106
    5: 10075611000001101
   ---                  
15114:             x05ZX
15115:             x05q2
15116:             x05qb
15117:             x05td
15118:             x05xd

我有一长串要保留(子集)并丢弃其余代码的代码。那么我如何子集这个 df 并只保留 x05ZX、X05qb 和 X05td 呢?我知道这些是我唯一想保留的?谢谢,J。

【问题讨论】:

【参考方案1】:
library(data.table)

code_id <- c(10073011000001107,
             10073911000001106,
             10075611000001101,
             "x05ZX",
             "x05q2",
             "x05qb",
             "x05td",
             "x05xd",
             "x05qb")

UniqueCodes <- data.table(code_id)

您可以使用要保留的代码构建向量

codes <- c("x05ZX", "X05qb", "X05td", "x05qb")

然后将向量传递给dt

UniqueCodes[code_id %in% codes]
##  code_id
## 1:   x05ZX
## 2:   x05qb
## 3:   x05qb

【讨论】:

谢谢 Jose,我差点搞定了,由于某种原因,顺序调换了……也许像 SQL 语法!

以上是关于R通过字符变量的值对data.table进行子集的主要内容,如果未能解决你的问题,请参考以下文章

R中按日期范围设置的子集data.table

R之data.table 介绍

按列值对 R 数据框进行子集,并将与特定值匹配的单元格更改为新值

使用数据表对子集执行操作

R 子集字符串值,包括竖线(|)

R:使用具有数字位置的重复列名来子集data.table