Ниже приведен пример фрейма данных (код и выходные данные), который включает соответствующие столбцы из моего фактического фрейма данных:
example <- data.frame(contig=c("Contig1", "Contig1", "Contig1", "Contig1", "Contig1", "Contig2", "Contig2", "Contig2", "Contig2", "Contig2", "Contig2", "Contig2", "Contig3", "Contig3", "Contig3", "Contig3", "Contig3", "Contig3", "Contig3", "Contig3"),
pos=c(500, 650, 750, 1000, 2000, 500, 4100, 5000, 5300, 6100, 6400, 7500, 600, 3800, 4500, 5000, 5500, 6100, 7000, 8000),
av=c(NA, 12, NA, NA, NA, NA, NA, 20, NA, NA, 25, NA, NA, 55, NA, NA, NA, 56, NA, NA))
![example data frame](https://i.stack.imgur.com/WDcce.png)
В настоящее время только некоторые наблюдения имеют значение для av
, тогда как многие NA
.Я хотел бы присвоить значения av
для замены NA
s, и у меня есть два разных, отдельных метода, которые я хотел бы использовать для этого, чтобы я мог сравнить результаты этих двух методов позже, но яне знаю, как реализовать любой метод.
Во-первых, я хотел бы заменить NA
s таким, чтобы в contig
(т. Е. Кадр данных должен быть сгруппирован по contig
), если pos
наблюдения с NA
для av
находится в пределах 1000 от pos
наблюдения со значением av
, тогда NA
будет заменено на это значение av
.Любые NA
с без pos
в пределах 1000 от другого pos
(со значением av
) на том же contig
останутся как NA
.
Во-вторых, я хотел бы заменить NA
s без условия, когда pos
находится в пределах 1000 от pos
значением av
, но все еще в группах contig
.Многие группы contig
будут иметь только одно наблюдение со значением av
, поэтому это значение av
может заменить все NA
в пределах этой группы contig
(я думаю, что na.locf()
сделает это).Однако в некоторых contig
группах имеется более одного наблюдения со значением av
, поэтому для тех, кому я бы хотел присвоить NA
s, значение av
наблюдения с pos
ближе к его собственному pos
значение.
Ниже приведены желаемые результаты двух методов для примера кадра данных.
Метод 1
![method1 output](https://i.stack.imgur.com/LRurB.png)
Метод 2
![method2 output](https://i.stack.imgur.com/HM25E.png)