我有一张名为t的表格,其中x和y值在每个x整数值之间以10的间隔分布(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行x7列。我的目标是对于0到100之间的每个整数,在所有6列中进行线性插值,以便最终的表格大小为101行x7列。
我能够使用以下方法分别对每一列进行插值:
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
))