Создать подмножество, содержащее «0» в качестве записей - PullRequest
0 голосов
/ 11 июля 2019

У меня есть фрейм данных, одно поле которого содержит разные числа. Тем не менее, он также содержит около 0/000/00000000. Как я могу определить в данном наборе данных все значения, содержащие 0,00 000,0000,00000 и т. Д. До 0000000000, и отобразить все эти записи? Использование логического оператора OR для всех комбинаций кажется утомительным. Есть ли другой обходной путь?

Ответы [ 2 ]

2 голосов
/ 11 июля 2019

Используйте регулярные выражения.Я предполагаю, что это символьный вектор.

grep("^0+$", df$col)
0 голосов
/ 12 июля 2019

Создание примера данных:

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+'),] 
...