我有一个这样的数据表:
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(有很多缺失的行),所以我需要一些自动化。
谢谢您的帮助!
制作一个主数据集,然后用于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)
| 归档时间: |
|
| 查看次数: |
880 次 |
| 最近记录: |