[英]Add new column (or filter) based on multiple columns and satisfying multiple conditions
[英]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
中过滤与满足condition
的selection
中的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.