Фильтровать строки по условию - PullRequest
0 голосов
/ 30 марта 2020

ниже - датафрейм df. Можем ли мы отфильтровать его по условиям. Например, если в третьем столбце есть символы, а в третьем - пустое значение, их следует отфильтровать

  row col value
1   1   0    ID
2   1   1    12
3   1   2    12
4   1   3     4
5   1   4   

Ожидаемый результат

  row col value
2   1   1    12
3   1   2    12
4   1   3     4

Ответы [ 3 ]

4 голосов
/ 30 марта 2020

Возможно, мы можем просто сохранить все строки с цифрами в столбце value:

df[grepl('\\d', df$value),]

Вывод:

  row col value
2   1   1    12
3   1   2    12
4   1   3     4
2 голосов
/ 30 марта 2020

Вы можете использовать:

subset(df, !(grepl("[A-Za-z]",value) | value == ''))

#  row col value
#2   1   1    12
#3   1   2    12
#4   1   3     4

Удаляет строки, в которых присутствуют символы ([A-Za-z]) ИЛИ пустые значения.

0 голосов
/ 30 марта 2020

Также проще преобразовать в numeric и subset на элементах без NA

subset(df, !is.na(as.numeric(value)))

Или с filter

library(dplyr)
library(stringr)
df %>%
   filter(str_detect(value, "^[0-9.]+$"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...