gpt4 book ai didi

r - 按两个向量提供的范围过滤,无需连接操作

转载 作者:行者123 更新时间:2023-12-04 10:50:19 25 4
gpt4 key购买 nike

我希望做到这一点:Take dates from one dataframe and filter data in another dataframe - R

除非不加入,因为我担心在加入我的数据之后,结果会太大而无法在过滤器之前放入内存。

这是示例数据:

tmp_df <- data.frame(a = 1:10)

我想做一个看起来像这样的操作:
lower_bound <- c(2, 4)
upper_bound <- c(2, 5)
tmp_df %>%
filter(a >= lower_bound & a <= upper_bound) # does not work as <= is vectorised inappropriately

我想要的结果是:
> tmp_df[(tmp_df$a <= 2 & tmp_df$a >= 2) | (tmp_df$a <= 5 & tmp_df$a >= 4), , drop = F] 
# one way to get indices to subset data frame, impractical for a long range vector
a
2 2
4 4
5 5

我的内存要求问题(关于链接的连接解决方​​案)是什么时候 tmp_df有更多行和 lower_boundupper_bound向量有更多的条目。 A dplyr解决方案,或者可以成为管道一部分的解决方案是首选。

最佳答案

也许你可以借用 inrange函数来自 data.table , 哪一个

checks whether each value in x is in between any of the intervals provided in lower,upper.



用法:

范围(x,下,上,incbounds=TRUE)
library(dplyr); library(data.table)

tmp_df %>% filter(inrange(a, c(2,4), c(2,5)))
# a
#1 2
#2 4
#3 5

关于r - 按两个向量提供的范围过滤,无需连接操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44621700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com