Удаление по списку — это метод, который удаляет все строки из фрейма данных, в которых отсутствует значение в каком -либо столбце.
Самый простой способ выполнить удаление по списку в R — использовать следующий синтаксис:
complete_df <- df[complete.cases(df), ]
Этот синтаксис использует функцию complete.cases() для создания нового фрейма данных, который содержит только строки из исходного фрейма данных, в которых нет пропущенных значений ни в одном столбце.
В следующем примере показано, как использовать эту функцию на практике.
Пример: выполнение удаления по списку в R
Предположим, у нас есть следующий фрейм данных в R, который содержит информацию о различных баскетболистах:
#create data frame
df <- data.frame(rating=c(70, 75, 75, 78, 81, 85, 89, 91, 94, 97),
points=c(12, 15, 14, 13, NA, 29, 24, 18, 20, 25),
assists=c(9, 5, NA, 5, 7, 8, 11, 12, 13, 11))
#view data frame
df
rating points assists
1 70 12 9
2 75 15 5
3 75 14 NA
4 78 13 5
5 81 NA 7
6 85 29 8
7 89 24 11
8 91 18 12
9 94 20 13
10 97 25 11
Обратите внимание, что две строки содержат значения NA в определенных столбцах.
Мы можем использовать следующий синтаксис для выполнения удаления по списку и сохранения только тех строк, в которых нет пропущенных значений ни в одном столбце:
#create new data frame that only contains rows with no missing values
complete_df <- df[complete.cases(df), ]
#view new data frame
complete_df
rating points assists
1 70 12 9
2 75 15 5
4 78 13 5
6 85 29 8
7 89 24 11
8 91 18 12
9 94 20 13
10 97 25 11
Обратите внимание, что ни в одной из строк этого нового фрейма данных нет пустых значений ни в одном столбце.
Также обратите внимание, что мы могли бы использовать функцию nrow() , чтобы узнать, сколько строк в исходном фрейме данных имеют пропущенные значения в любом столбце:
#count how many rows have missing values in any column
nrow(df[ ! complete.cases(df), ])
[1] 2
Это говорит нам о том, что в 2 строках исходного фрейма данных отсутствуют значения по крайней мере в одном столбце.
И мы можем так же легко подсчитать, сколько строк не имеют пропущенных значений ни в одном столбце:
#count how many rows do not have missing values in any column
nrow(df[complete.cases(df), ])
[1] 8
Это говорит нам о том, что в 8 строках исходного фрейма данных не было пропущенных значений ни в одном столбце.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как найти и подсчитать пропущенные значения в R
Как интерполировать пропущенные значения в R