繁体   English   中英

如何使用tidyverse根据满足条件的多列过滤行?

[英]How to filter rows based on multiple columns satisfying conditions using tidyverse?

数据:

> library(tidyverse)
> df <- tibble(id = c(1, 1, 2, 2, 3, 3, 4, 5), condition = c(1, 0, -1, 1, 0, 3, 2, 10), distractor = c(10, 1, 10, 0.1, -5, 70, NA, 0.2))
> df
# A tibble: 8 × 3
     id condition distractor
  <dbl>     <dbl>      <dbl>
1     1         1       10  
2     1         0        1  
3     2        -1       10  
4     2         1        0.1
5     3         0       -5  
6     3         3       70  
7     4         2       NA  
8     5        10        0.2

包含过滤行选择标准的数据框:

> selection <- tibble(id = c(1, 2, 3), condition = c(1, -1, 0))
> selection
# A tibble: 3 × 2
     id condition
  <dbl>     <dbl>
1     1         1
2     2        -1
3     3         0

如何从df中过滤与满足conditionselection中的id匹配的id

预计 output:

     id condition distractor
  <dbl>     <dbl>      <dbl>
1     1         1       10  
2     2        -1       10  
3     3         0       -5  

您可以使用semi_join()

library(dplyr)

 df %>%
   semi_join(selection)

Joining with `by = join_by(id, condition)`
# A tibble: 3 × 3
     id condition distractor
  <dbl>     <dbl>      <dbl>
1     1         1         10
2     2        -1         10
3     3         0         -5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM