#r #dplyr
Вопрос:
Я хочу удалить только те строки, которые содержат отрицательное значение во всех столбцах. Например, взгляните на мой набор данных следующим образом: Итак, я хочу удалить только строку 4.
Variable 1 Variable 2 Variable 3 Variable 4 Variable 5 Variable 6 Variable 7
2 -9 4 3 2 3 5
3 -7 4 3 3 5 3
4 5 5 1 5 3 2
-5 -1 -9 -9 -7 -1 -6
-9 3 3 2 3 4 3
-5 -9 2 1 3 4 2
3 2 1 5 5 5 1
4 4 -3 -3 6 5 4
Ответ №1:
Используйте либо if_all
и отрицайте ( !
)
library(dplyr)
df1 <- df1 %>%
filter(!if_all(everything(), ~ . < 0))
Или использовать if_any
df1 <- df1 %>%
filter(if_any(everything(), ~ . >= 0))
df1
Variable1 Variable2 Variable3 Variable4 Variable5 Variable6 Variable7
1 2 -9 4 3 2 3 5
2 3 -7 4 3 3 5 3
3 4 5 5 1 5 3 2
4 -9 3 3 2 3 4 3
5 -5 -9 2 1 3 4 2
6 3 2 1 5 5 5 1
7 4 4 -3 -3 6 5 4
данные
df1 <- structure(list(Variable1 = c(2L, 3L, 4L, -5L, -9L, -5L, 3L, 4L
), Variable2 = c(-9L, -7L, 5L, -1L, 3L, -9L, 2L, 4L), Variable3 = c(4L,
4L, 5L, -9L, 3L, 2L, 1L, -3L), Variable4 = c(3L, 3L, 1L, -9L,
2L, 1L, 5L, -3L), Variable5 = c(2L, 3L, 5L, -7L, 3L, 3L, 5L,
6L), Variable6 = c(3L, 5L, 3L, -1L, 4L, 4L, 5L, 5L), Variable7 = c(5L,
3L, 2L, -6L, 3L, 2L, 1L, 4L)), class = "data.frame", row.names = c(NA,
-8L))
Комментарии:
1. Спасибо! А что, если бы мне пришлось удалить только те строки, которые содержат отрицательные значения в столбцах 6 и 7?
2. @TannyaKumar использовать
df1 %>% filter(!if_all(c(6,7), ~ . < 0))
3. Привет, я не вижу, чтобы столбцы удалялись, что означает, что удаление не произошло.
4. @TannyaKumar просто выполни задание, т. е.
df1 <- df1 %>% filter(if_any(everything(), ~ . >= 0))
5. Без назначения, он просто выводится на консоль, и изменения автоматически не выполняются для нужного вам объекта
df1 <- df1 %>%..