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

问题描述 投票:-1回答:2

非常简单和常见的任务: 我需要在data.table中等效于Excel的FILL DOWN(自动填充)

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

谢谢!

r excel data.table autofill
2个回答
2
投票

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

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

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


1
投票

例如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")
© www.soinside.com 2019 - 2024. All rights reserved.