Boa tarde pessoal,
Tenho dois dataframes, um chamado dado e outro chamado gff, cada um deles tem as colunas nome, localização, posição final e posição inicial. Entretanto os nomes entre eles não são correspondentes. O que eu queria fazer é comparar o valores de loc, inicio e fim de cada coluna no dataframe dado e ver se a localização é exatamente igual ao dataframe gff e se os valores para inicio e fim estão dentro do que está no dataframe gff (não precisa ser igual, precisa estar entre os valores). Caso esteja presente entre os valores, criar uma nova coluna no arquivo gff e nessa coluna conter o nome da linha do dataframe dado que cumpriu os requisitos.
Segue um exemplo reprodutível.
library(tidyverse)
#> Warning: package 'ggplot2' was built under R version 4.1.3
#> Warning: package 'tibble' was built under R version 4.1.3
#> Warning: package 'dplyr' was built under R version 4.1.3
dado <- tibble(nome = c("seq_1", "seq_2", "seq_3"),
loc = c("c1", "c2", "c3"),
inicio = c(3, 50, 100),
fim = c(20, 89, 250))
dado
#> # A tibble: 3 x 4
#> nome loc inicio fim
#> <chr> <chr> <dbl> <dbl>
#> 1 seq_1 c1 3 20
#> 2 seq_2 c2 50 89
#> 3 seq_3 c3 100 250
gff <- tibble(nome = c("gene1", "gene2", "gene3"),
loc = c("c1", "c2", "c3"),
inicio = c(1, 60, 253),
fim = c(25, 95, 300))
gff
#> # A tibble: 3 x 4
#> nome loc inicio fim
#> <chr> <chr> <dbl> <dbl>
#> 1 gene1 c1 1 25
#> 2 gene2 c2 60 95
#> 3 gene3 c3 253 300
Created on 2022-06-28 by the reprex package (v2.0.1)
Nesse caso o resultado esperado seria que as duas primeiras linhas cumpram os requisitos e que uma nova coluna fosse criada com os nomes “seq_1” e “seq_2” e na terceira linha um NA… Existe também a possibilidade de mais de uma seq cumprir os requisitos… Como eu poderia resolver essa questão?
Obrigada desde já.