【发布时间】:2018-01-27 11:52:09
【问题描述】:
我有两个数据框。 df1
col1
1 apples
2 oranges
3 apples
4 banana
和 df2
setID col1
1 1 apples
2 1 oranges
3 1 apples
4 1 banana
5 2 apples
6 2 oranges
7 2 oranges
8 2 apples
9 3 oranges
10 3 grapes
11 3 banana
12 3 banana
13 4 apples
21 4 oranges
31 4 apples
41 4 oranges
我使用 dplyr 包中的过滤器将 df2 缩小为 df1$col1[1] 并将结果放入 tempdf
> tempdf <- df2 %>% group_by(setID) %>% filter(any(col1==df1$col1[1]))
> tempdf
# A tibble: 12 x 2
# Groups: setID [3]
setID col1
<dbl> <chr>
1 1 apples
2 1 oranges
3 1 apples
4 1 banana
5 2 apples
6 2 banana
7 2 oranges
8 2 apples
9 4 apples
10 4 oranges
11 4 grapes
12 4 oranges
它需要按 setID 分组,因为我正在尝试查看哪个 setID 与 df1 最匹配。由于 setID = 3 没有任何苹果,它在第一次迭代中被省略。我希望这是一个循环,以便每次运行时 tempdf 都会得到更多过滤。
对于下一个元素,它应该 df1$col1[1:2] 以便它按顺序检查“apples”和“oranges”。所以在第二次迭代之后 tempdf 应该是这样的。
setID col1
<dbl> <chr>
1 1 apples
2 1 oranges
3 1 apples
4 1 banana
5 4 apples
6 4 oranges
7 4 grapes
8 4 oranges
下一次迭代应该检查 df1$col1[2:3] 所以它总是检查前一个元素。这次是“橙子”和“苹果”。
setID col1
<dbl> <chr>
1 1 apples
2 1 oranges
3 1 apples
4 1 banana
一旦它到达一个唯一的 setID,循环应该结束。结果将是 df1 与 df2 的 setID=1 匹配。
【问题讨论】:
-
这个问题很不清楚。请先说明您要完成的工作,展示所需的最终结果,然后让论坛决定如何让您到达那里。