У меня есть таблица t со значениями x и y, разнесенными между каждыми 10 целыми числами x (столбец value
), например:
value -20 -10 0 24 40 55
1 100 41700 41700 41700 41700 41800 41700
2 90 40200 40600 40700 40800 40800 40800
3 80 39200 39700 39800 40000 40000 39900
4 70 38200 38800 38800 39000 39100 39000
5 60 37200 37800 37900 38000 38200 38200
6 50 36200 36700 36900 37000 37000 37000
7 40 35400 35900 36200 36300 36300 36400
8 30 34600 35300 35600 35800 35800 35900
9 20 33700 34600 34800 35200 35100 35100
10 10 31600 33700 33800 34000 33900 33900
11 0 30000 30000 26500 30700 30100 30100
Прямо сейчас Таблица состоит из 11 строк и 7 столбцов. Моя цель состоит в том, чтобы линейно интерполировать значения во всех 6 столбцах для каждого целого числа от 0 до 100 , чтобы в конце таблицы была 101 строка x 7 столбцов.
Я могу интерполировать каждый столбец отдельно, используя следующий метод:
x <- t$value
y <- t$`-20`
plot(x, y, main = "-20 mv", xlab = "soc", ylab = "temp", pch = 20)
points(approx(x, y, xout = 0:100), col ="blue", pch = 1)
Может ли кто-нибудь предложить более быстрый метод с dplyr
или data.table
или база R с несколькими командами, которые будут применять это ко всей таблице?
Данные:
dput(t)
structure(list(value = c(100L, 90L, 80L, 70L, 60L, 50L, 40L,
30L, 20L, 10L, 0L), `-20` = c(41700L, 40200L, 39200L, 38200L,
37200L, 36200L, 35400L, 34600L, 33700L, 31600L, 30000L), `-10` = c(41700L,
40600L, 39700L, 38800L, 37800L, 36700L, 35900L, 35300L, 34600L,
33700L, 30000L), `0` = c(41700L, 40700L, 39800L, 38800L, 37900L,
36900L, 36200L, 35600L, 34800L, 33800L, 26500L), `24` = c(41700L,
40800L, 40000L, 39000L, 38000L, 37000L, 36300L, 35800L, 35200L,
34000L, 30700L), `40` = c(41800L, 40800L, 40000L, 39100L, 38200L,
37000L, 36300L, 35800L, 35100L, 33900L, 30100L), `55` = c(41700L,
40800L, 39900L, 39000L, 38200L, 37000L, 36400L, 35900L, 35100L,
33900L, 30100L)), class = "data.frame", row.names = c(NA, -11L
))