A: 如何使用 %in% 过滤列表中某个值的行
您可以在 R 中使用以下基本语法和%in%运算符来过滤列表中包含值的行:
library (dplyr) #specify team names to keep team_names <- c(' Mavs ', ' Pacers ', ' Nets ') #select all rows where team is in list of team names to keep df_new <- df %>% filter(team %in% team_names)
这种特殊的语法会过滤数据框,以仅保留team列的值等于我们指定的team_names向量的三个值之一的行。
以下示例展示了如何在实践中使用此语法。
示例:使用 %in% 过滤列表中具有值的行
假设我们在 R 中有以下数据框,其中包含有关各个篮球队的信息:
#create data frame
df <- data. frame (team=c('Mavs', 'Pacers', 'Mavs', 'Celtics', 'Nets', 'Pacers'),
points=c(104, 110, 134, 125, 114, 124),
assists=c(22, 30, 35, 35, 20, 27))
#view data frame
df
team points assists
1 Mavs 104 22
2 Pacers 110 30
3 Mavs 134 35
4 Celtics 125 35
5 Nets 114 20
6 Pacers 124 27
假设我们要过滤数据框以仅包含团队列中的值等于以下团队名称之一的行:
- 小牛队
- 步行者队
- 网队
我们可以使用以下语法和%in%运算符来执行此操作:
library (dplyr) #specify team names to keep team_names <- c(' Mavs ', ' Pacers ', ' Nets ') #select all rows where team is in list of team names to keep df_new <- df %>% filter(team %in% team_names) #view updated data frame df_new team points assists 1 Mavs 104 22 2 Pacers 110 30 3 Mavs 134 35 4 Nets 114 20 5 Pacers 124 27
请注意,仅保留球队列中具有 Mavs、Pacers 或 Nets 值的行。
如果要过滤团队名称不在团队名称列表中的行,只需在列名称前面添加感叹号 ( ! ):
library (dplyr) #specify team names to not keep team_names <- c(' Mavs ', ' Pacers ', ' Nets ') #select all rows where team is not in list of team names to keep df_new <- df %>% filter( ! team %in% team_names) #view updated data frame df_new team points assists 1 Celtics 125 35
请注意,仅保留球队列中值不等于Mavs、Pacers 或 Nets 的行。
注意:您可以在 dplyr中找到过滤器函数的完整文档。
其他资源
以下教程解释了如何在 dplyr 中执行其他常见操作:
如何使用 dplyr 按组选择第一行
如何使用 dplyr 按多个条件进行过滤
如何使用 dplyr 过滤包含特定字符串的行