У меня есть датафрейм, который выглядит так:
# Dataframe
set.seed(1)
df <- data.frame(a=c('foo', 'foo', 'bar', 'bar'),
b=c('baz', 'baz', 'quz', 'quz'),
c=as.Date(c("2018-01-01", "2018-04-04")),
d=c(1, 4, 1, 4),
e=runif(4))
Я интерполирую данные следующим образом:
# Split to do lapply
l <- split(df, df$a)
# Interpolate
l2 <- lapply(l,
function(x) approx(x = x$d,
y = x$e,
xout = c(2, 3)))
В конечном итоге я хотел бы получить кадр данных, который выглядит следующим образом, но не может понять, как вернуть результаты интерполяции обратно в кадр данных.
Желаемый результат:
a b c d e
1 foo baz 2019-01-01 1 0.2655087
2 foo baz NA 2 0.3010471
3 foo baz NA 3 0.3365855
4 foo baz 2019-04-04 4 0.3721239
5 bar quz 2019-01-01 1 0.5728534
6 bar quz NA 2 0.6846382
7 bar quz NA 3 0.7964230
8 bar quz 2019-04-04 4 0.9082078