创建一个包含“0”的子集作为记录

Create a subset containing '0' as records

我有一个数据框,其一个字段包含不同的数字。但是,它还包含一些 0/000/00000000。如何在给定数据集中识别包含 0,00,000,0000,00000 等的所有值,直到 0000000000 并显示所有这些记录?对所有组合使用 OR 逻辑运算符似乎很乏味。还有其他解决方法吗?

使用正则表达式。我假设它是一个字符向量。

grep("^0+$", df$col)

创建示例数据:

set.seed(100)
library('data.table')
nums <- sample(c(11101, 11001, 10001, 99991, 99992, 99993), 52, T)
DT <- data.table(A = LETTERS, B = nums)

使用data.table:

DT[, B := as.character(B)]
subDT <- DT[B %like% '0']

使用 data.frame 和 data.table:

setDF(DT)
subDT <- DT[like(DT$B, '0'),]

使用 data.frame 和 dplyr:

library('dplyr')
subDT <- DT %>%
  filter(grepl('0', B, T))

使用 data.frame 和 stringi:

library('stringi')
subDT <- DT[stri_detect_fixed(DT$B, '0'),]
# if you're only interested in leading 0's
subDT <- DT[stri_detect_regex(DT$B, '^0+'),]