我有两组与时间无关的样本.我想合并它们并计算我没有两者值的时间的缺失值.简化示例:
A <- cbind(time=c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100),
Avalue=c(1, 2, 3, 2, 1, 2, 3, 2, 1, 2))
B <- cbind(time=c(15, 30, 45, 60), Bvalue=c(100, 200, 300, 400))
C <- merge(A,B, all=TRUE)
time Avalue Bvalue
1 10 1 NA
2 15 NA 100
3 20 2 NA
4 30 3 200
5 40 2 NA
6 45 NA 300
7 50 1 NA
8 60 2 400
9 70 3 NA
10 80 2 NA
11 90 1 NA
12 100 2 NA
Run Code Online (Sandbox Code Playgroud)
通过假设每个样本之间的线性变化,可以计算缺失的NA值.直觉上很容易看出时间15和45的A值应该是1.5.但是例如在时间20处对B的适当计算将是
100 +(20 - 15)*(200 - 100)/(30 - 15)
等于133.33333.第一个括号是估计时间和最后一个可用样本之间的时间.第二个括号是最近的样本之间的差异.第三个括号是最近样本之间的时间.
如何使用R计算NA值?
Ana*_*liy 16
使用zoo包:
library(zoo)
Cz <- zoo(C)
index(Cz) <- Cz[,1]
Cz_approx <- na.approx(Cz)
Run Code Online (Sandbox Code Playgroud)