当所有列都大于值时筛选行

时间:2018-06-11 02:20:12

标签: r dataframe select dplyr subset

我有一个数据框,我想对所有列值满足我的截止值的行进行子集化。

这是数据框:

   A B C
1  1 3 5
2  4 3 5
3  2 1 2

我想要选择的是所有列都大于2的行。 第二行是我想要的。

[1] 4 3 5

这是我的代码:

 subset_data <- df[which(df[,c(1:ncol(df))] > 2),]

但我的代码并未应用于所有列。 你知道我该如何解决这个问题吗?

1 个答案:

答案 0 :(得分:5)

我们可以创建一个逻辑矩阵,将整个数据框与2进行比较,然后对其rowSums进行操作,并选择那些值等于df

中列数的行
df[rowSums(df > 2) == ncol(df), ]

#  A B C
#2 4 3 5

使用dplyrfilter_all

all_vars方法
library(dplyr) 
df %>%
 filter_all(all_vars(. > 2))

#  A B C
#1 4 3 5

apply方法

df[apply(df > 2, 1, all), ]