R объединяет две таблицы на основе интервалов различной длины - PullRequest
0 голосов
/ 24 апреля 2020

Меня интересует сравнение значений Fst в областях генома, определенных как архаи c или недавних (человеческих).

Я хотел бы добавить значения Fst (weighted_fst), которые я вычислил в ячейки по 50000 б.п. (table Fst_NEAcNWAc_1Mb_2) для таблицы, указывающей, является ли область архаи c или недавней (table NWAc1), то есть в ячейках по 1000 б.п. chrm - имя скаффолда, начало начала интервала в п.о.

Я хотел бы скопировать значения fst из 50000 бинов в 1000 б.п. (поэтому значение будет скопировано с перерывом 50 раз для последняя корзина, которая будет зависеть от длины лесов). Например, если длина каркаса равна 260000, то последняя корзина в 50 000 бит / с будет иметь только 10 000 бит / с, поэтому она будет скопирована 10 раз.

У меня также есть файл с длиной chrm (со столбцами chr и size)

Входные таблицы выглядят так:

> NWAc1
# A tibble: 1,048,575 x 6
   chr          start   obs type   human archaic
   <chr>        <dbl> <dbl> <chr> <dbl>   <dbl>
 1 MRVK01000017     0     0 Human 0.996 0.00444
 2 MRVK01000017  1000     0 Human 0.997 0.00324
 3 MRVK01000017  2000     0 Human 0.997 0.00323
 4 MRVK01000017  3000     0 Human 0.996 0.00368
 5 MRVK01000017  4000     0 Human 0.996 0.00437
 6 MRVK01000017  5000     0 Human 0.993 0.00739
 7 MRVK01000017  6000     0 Human 0.986 0.0144 
 8 MRVK01000017  7000     0 Human 0.972 0.0284 
 9 MRVK01000017  8000     1 Human 0.932 0.0685

.... to be continued
899 MRVK01000017  998000     1 Human 0.932 0.0685
900 MRVK01000017  999000     1 Human 0.932 0.0685
...... to be continued
 1 MRVK01000060     0     0 Human 0.996 0.00444
 2 MRVK01000060  1000     0 Human 0.997 0.00324
 3 MRVK01000060  2000     0 Human 0.997 0.00323
 4 MRVK01000060  3000     0 Human 0.996 0.00368
 5 MRVK01000060  4000     0 Human 0.996 0.00437
 6 MRVK01000060  5000     0 Human 0.993 0.00739
 7 MRVK01000060  6000     0 Human 0.986 0.0144


>Fst_NEAcNWAc_1Mb_2
# A tibble: 39,817 x 6
   chr           start    end nvariant weighted_fst mean_fst
   <chr>         <dbl>  <dbl>    <dbl>        <dbl>    <dbl>
 1 MRVK01000017      0  50000       35        0.566    0.326
 2 MRVK01000017  50000 100000       43        0.251    0.198
 3 MRVK01000060      0  50000       22        0.346    0.146

Выходная информация будет выглядеть следующим образом:

>Out_table
   chr          start   obs type   human archaic mean_fst
   <chr>        <dbl> <dbl> <chr> <dbl>   <dbl>    <dbl>
 1 MRVK01000017     0     0 Human 0.996 0.00444    0.566
 2 MRVK01000017  1000     0 Human 0.997 0.00324    0.566
 3 MRVK01000017  2000     0 Human 0.997 0.00323    0.566
 4 MRVK01000017  3000     0 Human 0.996 0.00368    0.566
 5 MRVK01000017  4000     0 Human 0.996 0.00437    0.566
 6 MRVK01000017  5000     0 Human 0.993 0.00739    0.566
 7 MRVK01000017  6000     0 Human 0.986 0.0144    0.566
 8 MRVK01000017  7000     0 Human 0.972 0.0284    0.566 
 9 MRVK01000017  8000     1 Human 0.932 0.0685    0.566
.... to be continued
899 MRVK01000017  998000     1 Human 0.932 0.0685  0.251 
900 MRVK01000017  999000     1 Human 0.932 0.0685  0.251
...... to be continued
 1 MRVK01000060     0     0 Human 0.996 0.00444   0.346
 2 MRVK01000060  1000     0 Human 0.997 0.00324   0.346
 3 MRVK01000060  2000     0 Human 0.997 0.00323   0.346
 4 MRVK01000060  3000     0 Human 0.996 0.00368   0.346
 5 MRVK01000060  4000     0 Human 0.996 0.00437   0.346
 6 MRVK01000060  5000     0 Human 0.993 0.00739   0.346
 7 MRVK01000060  6000     0 Human 0.986 0.0144   0.346

Я пытался использовать left_join и mutate функции от tidyverse, но безуспешно. Не могли бы вы помочь?

Спасибо, С наилучшими пожеланиями,

Март ie

...