Удалить строки из фрейма данных, если они содержат определенное значение (R, dplyr) - PullRequest
1 голос
/ 03 февраля 2020

У меня есть датафрейм, дф. Я хотел бы удалить все строки, содержащие значение 0. из кадра данных.

  ID     Value

  A      8
  A      8
  A      0
  B      1
  B      2
  C      0

Желаемый результат:

 ID     Value

 A      8
 A      8
 B      1
 B      2

Вот dput:

 structure(list(ID = structure(c(1L, 1L, 1L, 2L, 2L, 3L), .Label = c("A", 
 "B", "C"), class = "factor"), Value = c(8L, 8L, 0L, 1L, 2L, 0L
 )), class = "data.frame", row.names = c(NA, -6L))

Это то, что я пытался:

 I was using the same concept to remove a column:

 library(dplyr)
 df%>% select(-c() 

 However, I am unsure how to specify how to remove the row if and only if it contains a 0.

1 Ответ

2 голосов
/ 03 февраля 2020

Мы можем использовать filter вместо select, поскольку select предназначен для выбора столбцов, в то время как filter делает наоборот, т.е. сохраняет / удаляет строки

library(dplyr)
df %>% 
  filter(Value!=0)
  #or filter(as.logical(Value))

In base R

subset(df, as.logical(Value))

Использование as.logical также работает, поскольку преобразует значения в TRUE / FALSE, т. Е. Все 0 будут FALSE, а любые другие, кроме этого, будут TRUE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...