【发布时间】:2020-12-02 07:58:25
【问题描述】:
如何在不实际写出的情况下通过多个条件有效地过滤data.frame。
为了更清楚,让我们看一下下面的小而简化的示例,其中希望提取介于 1 和 2 或 4 和 6 或 60 和 65 之间的从 1 到 100 的所有整数:
df <- data.frame(number = 1:100, someothermeasure = rnorm(100))
filters <- matrix(c(1,2,4,6,60,65), ncol = 2, byrow = T)
我想要与以下相同的结果,但没有手动列出各个条件:
dplyr::filter(df, (number >= filters[1,1] & number <= filters[1,2])|(number >= filters[2,1] & number <= filters[2,2])|(number >= filters[3,1] & number <= filters[3,2]))
只有在有少量条件需要过滤时才可以写出来。但是,当过滤条件dim(filters)[1] 等于10000 时该怎么办?这种情况该如何处理?
【问题讨论】:
标签: r dataframe filter dplyr tidyverse