如何将缺失的行和插值添加到 R 中的数据框中?

Cal*_*leb 3 interpolation r

我有一个这样的数据表:

dat <- data.frame(
   age  = c(0,10,20,40,70,100),
   surv = c(1.0,0.9,0.8,0.6,0.3,0.0)
)
Run Code Online (Sandbox Code Playgroud)

我想为每个缺失的年龄(30,50,60,80,90)添加一行,然后我想将 surv 的线性插值添加到新行。所以新行将是 (30,0.7) (80, 0.2) 等。

这只是一个例子。我实际上正在处理一个更大的数据集,从 0 到 5,000,000 乘以 10(有很多缺失的行),所以我需要一些自动化。

谢谢您的帮助!

the*_*ail 5

制作一个主数据集,然后用于approx线性插值:

newdat <- merge(data.frame(age=seq(0,100,10)),dat,all=TRUE)
newdat$surv[is.na(newdat$surv)] <- 
    with(newdat, approx(age, surv, xout=age)$y)[is.na(newdat$surv)]

newdat

#   age surv
#1    0  1.0
#2   10  0.9
#3   20  0.8
#4   30  0.7
#5   40  0.6
#6   50  0.5
#7   60  0.4
#8   70  0.3
#9   80  0.2
#10  90  0.1
#11 100  0.0
Run Code Online (Sandbox Code Playgroud)