如何使用 dplyr 删除具有 na 值的行


您可以使用dplyr包中的以下方法来删除具有 NA 值的行:

方法1:删除任意列中具有NA值的行

 library (dplyr)

#remove rows with NA value in any column
df %>%
  n / A. omit ()

方法2:删除某些列中具有NA值的行

 library (dplyr)

#remove rows with NA value in 'col1' or 'col2'
df %>%
  filter_at(vars(col1, col2), all_vars( ! is. na (.)))

方法3:删除特定列中具有NA值的行

 library (dplyr)

#remove rows with NA value in 'col1'
df %>%
  filter( ! is. na (col1))

以下示例展示了如何在实践中使用以下数据框使用这些方法:

 #create data frame with some missing values
df <- data. frame (team=c('A', 'A', 'B', 'B', 'C'),
                 points=c(99, 90, 86, 88, NA),
                 assists=c(33, NA, 31, 39, 34),
                 rebounds=c(NA, 28, 24, 24, 28))

#view data frame
df

  team points assists rebounds
1 A 99 33 NA
2 A 90 NA 28
3 B 86 31 24
4 B 88 39 24
5 C NA 34 28

方法1:删除任意列中具有NA值的行

以下代码展示了如何删除数据框中任意列中具有 NA 值的行:

 library (dplyr)

#remove rows with NA value in any column
df %>%
  n / A. omit ()

  team points assists rebounds
3 B 86 31 24
4 B 88 39 24

剩下的唯一两行是任何列中都没有任何 NA 值的行。

方法2:删除某些列中具有NA值的行

以下代码展示了如何删除数据框中任意列中具有 NA 值的行:

 library (dplyr)

#remove rows with NA value in 'points' or 'assists' columns
df %>%
  filter_at(vars(points, assists), all_vars( ! is. na (.)))

  team points assists rebounds
1 A 99 33 NA
2 B 86 31 24
3 B 88 39 24

剩下的唯一行是“得分”或“助攻”列中没有任何 NA 值的行。

方法3:删除特定列中具有NA值的行

以下代码展示了如何删除数据框特定列中具有 NA 值的行:

 library (dplyr)

#remove rows with NA value in 'points' column
df %>%
  filter( ! is. na (dots))

  team points assists rebounds
1 A 99 33 NA
2 A 90 NA 28
3 B 86 31 24
4 B 88 39 24

剩下的唯一行是“点”列中没有任何 NA 值的行。

其他资源

以下教程解释了如何使用 dplyr 执行其他常见操作:

dplyr:如何过滤包含某些字符串的行
dplyr:如何用零替换 NA 值
dplyr:如何使用“不包含”过滤器

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注