如何填充(自动填充)值,例如用 R 中的 data.table 将 NA 替换为组中的第一个值?

How to FILL DOWN (autofill) value , eg replace NA with first value in group, using data.table in R?

非常简单和常见的任务:
我需要在 data.table 中填写(类似于 MS Excel 中的自动填充功能)以便

library(data.table)
DT <- fread(
"Paul 32
NA    45
NA    56
John  1
NA    5
George 88
NA    112")

变成

Paul 32
Paul 45
Paul 56
John 1
John 5
George 88
George 112

谢谢!

是的,最好的方法是使用@Rui Barradas zoo 包的想法。您可以使用 na.locf 函数在一行代码中轻松完成。

library(zoo)
DT[, V1:=na.locf(V1)]

在使用 fread 读取数据后,将 V1 替换为您为列命名的任何名称。祝你好运!

例如2,可以考虑使用stats::spline外推如下:

DT2[is.na(V2), V2 := 
    as.integer(DT2[, spline(.I[!is.na(V2)], V2[!is.na(V2)], xout=.I[is.na(V2)]), by=.(V1)]$y)]

输出:

     V1  V2
1: Paul   1
2: Paul   2
3: Paul   3
4: Paul   4
5: John 100
6: John 110
7: John 120
8: John 130

数据:

DT2 <- fread(
"Paul, 1
Paul, 2 
Paul, NA 
Paul, NA 
John, 100
John, 110
John, NA
John, NA")