Як відфільтрувати кадр даних без втрати рядків na за допомогою dplyr
Ви можете використовувати наступний базовий синтаксис для фільтрації кадру даних без втрати рядків, що містять значення NA, за допомогою функцій у пакетах dplyr і Tidyr у R:
library (dplyr) library (tidyr) #filter for rows where team is not equal to 'A' (and keep rows with NA) df <- df %>% filter((team != ' A ') %>% replace_na( TRUE ))
Зверніть увагу, що ця формула використовує функцію replace_na() з пакету Tidyr для перетворення значень NA в TRUE, щоб вони не видалялися з кадру даних під час фільтрації.
У наступному прикладі показано, як використовувати цей синтаксис на практиці.
Приклад: фільтрування кадру даних без втрати рядків NA за допомогою dplyr
Припустимо, у R є наступний кадр даних, який містить інформацію про різних баскетболістів:
#create data frame df <- data. frame (team=c('A', NA, 'A', 'B', NA, 'C', 'C', 'C'), points=c(18, 13, 19, 14, 24, 21, 20, 28), assists=c(5, 7, 17, 9, 12, 9, 5, 12)) #view data frame df team points assists 1 to 18 5 2 <NA> 13 7 3 A 19 17 4 B 14 9 5 <NA> 24 12 6 C 21 9 7 C 20 5 8 C 28 12
Тепер припустімо, що ми використовуємо функцію filter() із пакета dplyr , щоб відфільтрувати фрейм даних, щоб він містив лише ті рядки, значення яких у стовпці team не дорівнює A:
library (dplyr) #filter for rows where team is not equal to 'A' df <- df %>% filter(team != ' A ') #view updated data frame df team points assists 1 B 14 9 2 C 21 9 3 C 20 5 4 C 28 12
Зауважте, що кожен рядок, де значення в стовпці team дорівнює A, було відфільтровано, включно з рядками, де значення в стовпці team дорівнює NA.
Якщо ми хочемо відфільтрувати рядки, де team дорівнює A, і зберегти рядки зі значеннями NA, ми можемо використати такий синтаксис:
library (dplyr) library (tidyr) #filter for rows where team is not equal to 'A' (and keep rows with NA) df <- df %>% filter((team != ' A ') %>% replace_na( TRUE )) #view updated data frame df team points assists 1 <NA> 13 7 2 B 14 9 3 <NA> 24 12 4 C 21 9 5 C 20 5 6 C 28 12
Зверніть увагу, що кожен рядок, де значення в стовпці team дорівнює A, було відфільтровано, але ми зберегли рядки, де значення в стовпці team дорівнює NA.
Примітка . Повну документацію щодо функції Tidyr replace_na() можна знайти тут .
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші поширені функції в dplyr:
Як фільтрувати за номером рядка за допомогою dplyr
Як фільтрувати за кількома умовами за допомогою dplyr
Як використовувати фільтр «не включено» в dplyr