2

我有两个不同的数据集(c1c2),它们一起绘制在一个图中。两条曲线都有不同的 x 和 y 值:

c1 = data.frame(
  x=c(0,1.1,2,  3,  4,  5),
  y=c(0,1.1,1.9,3.2,4.3,5.2)
)
c2 = data.frame(
  x=c(0,0.3,0.9,2.1,3.2,4.2,5),
  y=c(0,0.4,1.5,2.3,3.2,4.1,5.1)
)
plot(c1, type="o", col=2)
lines(c2, type="o", col=3)

res=c1-c2现在我想为所有唯一的 x 值 ( )绘制两条曲线 ( ) 的残差unique(c(c1$x, c2$x))。如果我有相同的 x 值,这将很容易。但似乎,我必须插入所有缺失的 x 值并将它们添加到测量数据集中。

有没有一种简单的方法可以在 R 中做到这一点?

4

1 回答 1

3

这个怎么样:

关于价值观c1$x

c1$y - approx(c2$x, c2$y, c1$x)$y
# [1]  0.0000000 -0.5333333 -0.3333333  0.1636364  0.3800000  0.1000000

关于价值观c2$x

approx(c1$x, c1$y, c2$x)$y - c2$y
# [1]  0.00 -0.10 -0.60 -0.27  0.22  0.38  0.10

或者,把它们放在一起,

x <- sort(unique(c(c1$x, c2$x)))
approx(c1$x, c1$y, x)$y - approx(c2$x, c2$y, x)$y
# [1] 0.0000000 -0.1000000 -0.6000000 -0.5333333 -0.3333333 -0.2700000  0.1636364  0.2200000
# [9] 0.3800000  0.3800000  0.1000000
于 2012-11-07T11:47:59.617 回答