Dplyr:如何使用“不存在”消息过滤器


您可以在dplyr中使用以下基本语法来过滤数据框中不在值列表中的行:

 df %>%
  filter (!col_name %in% c(' value1 ', ' value2 ', ' value3 ', ...))

以下示例展示了如何在实践中使用此语法。

示例 1:过滤列中不包含值的行

假设我们在 R 中有以下数据框:

 #create data frame
df <- data. frame (team=c('A', 'A', 'B', 'B', 'C', 'C', 'D', 'D'),
                 position=c('G', 'G', 'F', 'G', 'F', 'C', 'C', 'C'),
                 points=c(12, 14, 19, 24, 36, 41, 18, 29))

#view data frame
df

  team position points
1 AG 12
2 AG 14
3 BF 19
4 BG 24
5 CF 36
6 CC 41
7 DC 18
8 DC 29

以下语法显示如何过滤团队名称不等于“A”或“B”的行:

 #filter for rows where team name is not 'A' or 'B'
df %>%
filter (!team %in% c(' A ', ' B '))

team position points
1 CF 36
2 CC 41
3 DC 18
4 DC 29

示例2:过滤多列中不包含值的行

假设我们在 R 中有以下数据框:

 #create data frame
df <- data. frame (team=c('A', 'A', 'B', 'B', 'C', 'C', 'D', 'D'),
                 position=c('G', 'G', 'F', 'G', 'F', 'C', 'C', 'C'),
                 points=c(12, 14, 19, 24, 36, 41, 18, 29))

#view data frame
df

  team position points
1 AG 12
2 AG 14
3 BF 19
4 BG 24
5 CF 36
6 CC 41
7 DC 18
8 DC 29

以下语法显示如何过滤团队名称不等于“A”位置不等于“C”的行:

 #filter for rows where team name is not 'A' and position is not 'C'
df %>%
filter (!team %in% c(' A ') & !position %in% c(' C '))

team position points
1 BF 19
2 BG 24
3 CF 36

其他资源

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

如何使用 dplyr 删除行
如何使用 dplyr 按索引选择列
如何使用 dplyr 过滤包含特定字符串的行

添加评论

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