Я хотел бы выполнить линейную интерполяцию в переменной кадра данных, которая учитывает: 1) разницу во времени между двумя точками, 2) момент, когда данные были взяты, и 3) человек, принятый для измерения переменной.R: Интерполяция NA по группам
Например, в следующем dataframe:
df <- data.frame(time=c(1,2,3,4,5,6,7,1,2,3),
Individuals=c(1,1,1,1,1,1,1,2,2,2),
Value=c(1, 2, 3, NA, 5, NA, 7, 5, NA, 7))
df
Я хотел бы получить:
result <- data.frame(time=c(1,2,3,4,5,6,7,1,2,3),
Individuals=c(1,1,1,1,1,1,1,2,2,2),
Value=c(1, 2, 3, 4, 5, 6, 7, 5, 5.5, 6))
result
Я не могу использовать исключительно функцию na.approx
пакета zoo
, потому что все наблюдения не являются consecutives, некоторые наблюдения принадлежат одному человеку, а другие наблюдения принадлежат другим. Причина в том, что если второй человек будет иметь свое первое окошко с NA
, и я бы использовал исключительно функцию na.approx
, я бы использовал информацию из individual==1
для интерполяции NA
из individual==2
(например, следующий фрейм данных имел бы sucherror)
df_2 <- data.frame(time=c(1,2,3,4,5,6,7,1,2,3),
Individuals=c(1,1,1,1,1,1,1,2,2,2),
Value=c(1, 2, 3, NA, 5, NA, 7, NA, 5, 7))
df_2
Я попытался с помощью пакетов zoo
и dplyr
:
library(dplyr)
library(zoo)
proof <- df %>%
group_by(Individuals) %>%
na.approx(df$Value)
Но я не могу выполнить group_by
в zoo
объекта.
Знаете ли вы, как интерполировать значения NA
в одной переменной по группам?
Спасибо заранее,
Не могли бы вы разработать немного о том, что ваш желаемый результат будет? Кроме того, что такое группировка «Ear_tag», которую вы пытаетесь сделать. Этот столбец не существует в представленном вами кадре данных? – Pash101