R. Заполните NA столбца A во фрейме данных, используя линейную интерполяцию - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть огромный фрейм данных, подобный этому:

CHR SNP POS REC MAP
1 NA 739010 2.6776 1.9791
1 rs12082473 740857 2.6843 1.9840
1 NA 754745 0.3996 2.0147
1 rs11240776 765269 NA NA 
1 NA 765948 0.4943 2.0192
1 NA 767038 0.49313 2.0197

Все строки в POS имеют значение, но в MAP есть много NA. Используя R, я хочу заполнить эти NA в новом столбце INT, используя линейную интерполяцию (ось x = POS, ось y = MAP). Например, для строки 5 (1 rs11240776 765269 NA NA) я должен получить значение от 2.0147 до 2.0192 в новом поле INT (например, 2.0164; просто игрушечный пример). Столбцы CHR представляют собой хромосомы, которые go между 1 и 22. MAP линейно возрастает от первой до конечной позиции CHR 1, но CHR2 снова начинается с 0, и то же самое для всех хромосом. Таким образом, необходимо выполнить интерполяцию, сгруппировав данные по CHR.

Мой ожидаемый результат:

CHR SNP POS REC MAP INT
1 NA 739010 2.6776 1.9791 1.9791
1 rs12082473 740857 2.6843 1.9840 1.9840
1 NA 754745 0.3996 2.0147 2.0147
1 rs11240776 765269 NA NA 2.0164
1 NA 765948 0.4943 2.0192 2.0192
1 NA 767038 0.49313 2.0197 2.0197

Я пробовал разные способы, как показано в:

Интерполяция значений NA

линейная интерполяция пропущенных значений во временных рядах

, но ни одно из этих решений не работает для моих данных. Любое предложение приветствуется!

...