Як відфільтрувати кадр даних без втрати рядків 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *