我有一个如下所示的数据框(Dataframe X):
id number found
1 5225 NA
2 2222 NA
3 3121 NA
我有另一个数据框,如下所示(数据框 Y):
id number1 number2
1 4000 6000
3 2500 3300
3 7000 8000
我想要做的是:对于 Dataframe X“number”列中的每个值,搜索它是否等于或介于 Dataframe Y 的任何“number1”和“number2”对值之间。此外,对于此“number1” ”和“number2”对值,其各自的“id”必须与 Dataframe X 中的“id”匹配。如果这一切都为真,那么我想在 Dataframe X 中相应行的“found”列中插入“YES” :
id number found
1 5225 YES
2 2222 NA
3 3121 YES
我该怎么做呢?谢谢您的帮助。
Using tidyverse
函数,特别是map_chr
迭代每个数字:
library(tidyverse)
tbl1 <- read_table2(
"id number found
1 5225 NA
2 2222 NA
3 3121 NA"
)
tbl2 <- read_table2(
"id number1 number2
1 4000 6000
2 2500 3300
3 7000 8000"
)
tbl1 %>%
mutate(found = map_chr(
.x = number,
.f = ~ if_else(
condition = any(.x > tbl2$number1 & .x < tbl2$number2),
true = "YES",
false = NA_character_
)
))
#> # A tibble: 3 x 3
#> id number found
#> <int> <int> <chr>
#> 1 1 5225 YES
#> 2 2 2222 <NA>
#> 3 3 3121 YES
创建于 2018-10-18 由代表包(v0.2.0)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)