如何使用 dplyr 过滤包含特定字符串的行


通常,您可能希望过滤 R 数据框中包含特定字符串的行。幸运的是,使用dplyr包中的filter()函数和 Base R 中的grepl()函数可以轻松做到这一点。

本教程使用以下数据框展示了这些函数的实际使用的几个示例:

 #create data frame
df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'),
                 points = c(12, 15, 19, 22, 32),
                 rebounds = c(5, 7, 7, 12, 11))

#view data frame
df

     player points rebounds
1 P Guard 12 5
2 S Guard 15 7
3S Forward 19 7
4 P Forward 22 12
5 Center 32 11

示例 1:过滤包含特定字符串的行

以下代码显示如何过滤包含特定字符串的行:

 #load dplyr package
library(dplyr)

#filter rows that contain the string 'Guard' in the player column
df %>% filter ( grepl ('Guard', player))

   player points rebounds
1 P Guard 12 5
2 S Guard 15 7

相关:比较 R 中的 grep() 和 grepl():有什么区别?

示例 2:过滤至少包含一个字符串的行

以下代码显示如何过滤球员列中包含“Guard”或“Forward”的行:

 #filter rows that contain 'Guard' or 'Forward' in the player column
df %>% filter ( grepl ('Guard|Forward', player))

     player points rebounds
1 P Guard 12 5
2 S Guard 15 7
3S Forward 19 7
4 P Forward 22 12

以下代码显示如何过滤读者列中包含“P”或“Center”的行:

 #filter rows that contain 'P' or 'Center' in the player column
df %>% filter ( grepl ('P|Center', player))

     player points rebounds
1 P Guard 12 5
2 P Forward 22 12
3 Center 32 11

示例 3:过滤包含特定字符串的行

以下代码显示了如何过滤(即删除)玩家列中包含“Guard”的行:

 #filter out rows that contain 'Guard' in the player column
df %>% filter (! grepl ('Guard', player))

     player points rebounds
1S Forward 19 7
2 P Forward 22 12
3 Center 32 11

以下代码显示如何过滤(即删除)球员列中包含“Guard”或“Center”的行:

 #filter out rows that contain 'Guard' or 'Center' in the player column
df %>% filter (! grepl ('Guard|Center', player))

     player points rebounds
1S Forward 19 7
2 P Forward 22 12

您可以在此处找到更多 R 教程。

添加评论

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