我有两个不同的数据集(c1
和c2
),它们一起绘制在一个图表中。两条曲线都有不同的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)
现在,我想为所有唯一x值(res=c1-c2
)绘制两条曲线(unique(c(c1$x, c2$x))
)的残差。如果我有相同的x值,这将很容易。但似乎我必须插入所有缺失的x值并将它们添加到测量数据集中。
在R中有一种简单的方法吗?
答案 0 :(得分: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