如何在 dplyr 中将 select_if 与多个条件一起使用


您可以使用以下基本语法和dplyr包的select_if()函数来选择数据框中满足多个条件之一的列:

 df %>% select_if( function (x) condition1 | condition2)

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

示例 1:将 select_if() 与类类型一起使用

以下代码演示如何使用select_if()函数选择数据框中具有字符数字类类型的列:

 library (dplyr)

#create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E'),
                 conference=as. factor (c('W', 'W', 'W', 'E', 'E')),
                 points_for=c(99, 90, 86, 88, 95),
                 points_against=c(91, 80, 88, 86, 93))

#select all character and numeric columns
df %>% select_if( function (x) is. character (x) | is. numeric (x))

  team points_for points_against
1 A 99 91
2 B 90 80
3 C 86 88
4 D 88 86
5 E 95 93

请注意,会返回单字符列 ( team ) 和两个数字列 ( point_forpoints_against ),而不会返回 Factors 列 ( conference )。

示例 2:将 select_if() 与类类型和列名称结合使用

以下代码演示如何使用select_if()函数选择数据框中具有因子类类型或points_for列名称的列:

 library (dplyr)

#create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E'),
                 conference=as. factor (c('W', 'W', 'W', 'E', 'E')),
                 points_for=c(99, 90, 86, 88, 95),
                 points_against=c(91, 80, 88, 86, 93))

#select all factor columns and 'points_for' column
df %>% select_if( function (x) is. factor (x) | all(x == .$points_for))

  conference points_for
1 W 99
2W 90
3 W 86
4 E 88
5 E 95

请注意,返回了单因子列和标记为points_for的列。

|符号是 R 中的逻辑“OR”运算符。请随意使用|符号,因为您想要使用两个以上的条件来选择列。

其他资源

以下教程解释了如何使用 dplyr 中的其他常用函数:

如何在 dplyr 中使用 across() 函数
如何在 dplyr 中使用 relocate() 函数
如何在 dplyr 中使用 slice() 函数

添加评论

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