StackOverflow вопросПересечение кадров несколько данных в R
Привет ребята,
Я пытаюсь «крест» несколько dataframes с R.
Мои кадры данных, поступающих из экспериментов секвенирования с высокой пропускной способностью и выглядят как следующие:
df1:
chr pos orient weight in_nucleosome in_subtelo
1 NC_001133 999 + 1 TRUE TRUE
2 NC_001133 1505 - 14 FALSE TRUE
3 NC_001133 1525 - 2 TRUE TRUE
4 NC_001134 480 + 1 TRUE TRUE
5 NC_001134 509 + 2 FALSE TRUE
6 NC_001134 539 + 3 FALSE TRUE
7 NC_001135 1218 + 1 TRUE TRUE
8 NC_001135 1228 + 2 TRUE TRUE
9 NC_001135 1273 + 1 TRUE TRUE
10 NC_001136 362 + 1 TRUE TRUE
и
df2:
chr feature start end orient
1 NC_001133 ARS 707 776 .
2 NC_001133 ARS 7997 8547 .
3 NC_001133 ARS 30946 31183 .
4 NC_001133 ARS_consensus_sequence 31002 31018 +
5 NC_001133 ARS_consensus_sequence 70418 70434 -
6 NC_001133 ARS_consensus_sequence 124463 124479 -
7 NC_001136 blocked_reading_frame 721071 721481 -
8 NC_001137 blocked_reading_frame 375215 377614 -
9 NC_001141 blocked_reading_frame 29032 30048 +
10 NC_001133 CDS 335 649 +
То, что я хочу сделать, это знать, для данной хромосоме ("Chr" здесь) и для каждого df2 $ функции или нет (df2 $ начать < df1 $ поз < df2 $ end). Затем я хотел бы добавить столбец в df1, имя которого было бы одним из рассмотренных df2feature и заполнено TRUE или FALSE в отношении условия, указанного ранее.
Я уверен, что семейство функций apply должно использоваться, возможно, вложенное в один antoher, но после нескольких часов попыток я не могу этого сделать.
Я сделал это в очень неэлегантном, длинном и подверженном ошибкам способе с вложенными циклами, но я убежден, что есть более простое и, возможно, более быстрое решение.
Спасибо за чтение этого,
Antoine.
Вы можете попробовать '' foverlaps' из data.table' или '' findOverlaps' из библиотеки (GenomicRanges) ' – akrun
Можете ли вы предоставить данные, которые обеспечили бы * некоторые * Матчи? Я не вижу ничего, что бы соответствовало вашим ограничениям. – r2evans
Благодаря вам я реализую свой пример, где не так хорошо выбрали, и в моем вопросе были опечатки. Я сразу же обновлю его. –