我想取一个(大)数据框的值:
library(tidyverse)
df.grid = expand.grid(x = letters, y = 1:60)
head(df.grid)
x y
1 a 1
2 b 1
3 c 1
4 d 1
5 e 1
6 f 1
[...]
最终到达a 2
,a 3
,等等。
我有第二个数据框,其中包含一些变量(x),我只需要范围(最小值和最大值)的一部分,每个“x”个变量都不同
sub.data = data.frame(x = c("a","c","d"), min = c(2,50,25), max = c(6,53,30))
sub.data
x min max
1 a 2 6
2 c 50 53
3 d 25 30
输出应如下所示:
x y
1 a 2
2 a 3
3 a 4
4 a 5
5 a 6
6 c 50
7 c 51
8 c 52
9 c 53
10 d 25
11 d 26
12 d 27
13 d 28
14 d 29
15 d 30
我试过这个:
df.grid %>%
group_by(x) %>%
filter_if(y > sub.data$min)
但它不起作用,因为min列有多个值,“if”部分会抱怨。
我也使用found this post,但它似乎对我不起作用,因为没有“匹配”变量来指导过滤过程。
我希望避免使用for循环,因为我希望将其应用于大小为11GB的 Dataframe 。
1条答案
按热度按时间ih99xse11#
我们可以使用非相等连接
对于
dplyr
版本1.1.0
,我们还可以将non-equi
连接与join_by
一起使用或者,正如@Davis Vaughan提到的,将
between
与left_joion
一起使用