假设我有第一个像这样的数据帧(dfA)
CHR POS
1 100
1 200
2 100
2 200
我还有另一个看起来像这样的数据框(dfB)
CHR START STOP VALUE
1 0 150 1000
1 200 300 2000
2 0 300 3000
我想有一个新的列在DFA如果dfA$POS
值的范围内发现的dfB$START
和dfB$STOP
。此外,第一列必须彼此匹配(dfA和dfB都具有相同的第一列CHR)。
如果找到,则dfA中新列中的行将填充中的值dfB$VALUE
。
结果应如下所示
CHR POS VALUE
1 100 1000
1 200 2000
2 100 3000
2 200 3000
我将如何去做呢?谢谢您的帮助!
使用between
以确定是否值落在指定的范围内。
library(dplyr)
dfA %>%
left_join(dfB) %>%
rowwise() %>%
filter(between(POS, START, STOP)) %>%
select(-c(START, STOP)) %>%
ungroup()
# # A tibble: 4 x 3
# CHR POS VALUE
# <int> <int> <int>
# 1 1 100 1000
# 2 1 200 2000
# 3 2 100 3000
# 4 2 200 3000
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句