如何使用dplyr删除行(附实例)

1,490 阅读1分钟

你可以使用以下基本语法,在R语言中使用dplyr从数据框中删除行:

1.删除任何带有NA的行

df %>%
  na.omit()

2.2. 删除任何在特定列中带有NA的行

df %>%

3.移除重复的内容

df %>%
  distinct()

4.按索引位置删除行

df %>%

5.根据条件删除行

df %>%
  filter(column1=='A' | column2 > 8)

下面的例子展示了如何在以下数据框架中实际使用这些方法:

library(dplyr)

#create data frame
df <- data.frame(team=c('A', 'A', 'B', 'B', 'C', 'C'),
                 points=c(4, NA, 7, 5, 9, 9),
                 assists=c(1, 3, 5, NA, 2, 2))

#view data frame
df

  team points assists
1    A      4       1
2    A     NA       3
3    B      7       5
4    B      5      NA
5    C      9       2
6    C      9       2

例1:删除任何带有NA的行

下面的代码显示了如何从数据框中删除任何带有NA值的行:

#remove any row with NA
df %>%
  na.omit()

  team points assists
1    A      4       1
3    B      7       5
5    C      9       2
6    C      9       2

例2:移除特定列中带有NA的任何行

下面的代码显示了如何删除特定列中有NA值的任何行:

#remove any row with NA in 'points' column:
df %>%
  filter(!is.na(points))

  team points assists
1    A      4       1
2    B      7       5
3    B      5      NA
4    C      9       2
5    C      9       2

例3:删除重复的行

下面的代码显示了如何删除重复的行:

#remove duplicate rows
df %>%
  distinct()

  team points assists
1    A      4       1
2    A     NA       3
3    B      7       5
4    B      5      NA
5    C      9       2

例4:按索引位置删除行

下面的代码显示了如何根据索引位置来移除行:

#remove rows 1, 2, and 4
df %>%
  filter(!row_number() %in% c(1, 2, 4))

  team points assists
1    B      7       5
2    C      9       2
3    C      9       2

例5:根据条件删除行

下面的代码显示了如何根据特定的条件来移除行:

#only keep rows where team is equal to 'A' or points is greater than 8
df %>%
  filter(column1=='A' | column2 > 8)

  team points assists
1    A      4       1
2    A     NA       3
3    C      9       2
4    C      9       2

其他资源

下面的教程解释了如何在dplyr中执行其他常用功能:

如何使用dplyr按索引选择列
如何使用dplyr按组排列变量
如何在dplyr中用0替换NA