使用 data.table 将 NA 替换为以前的值

Replace NAs with previous values using data.table

我正在使用 R 中的一些数据集,尽管能够使用基础 R 解决我的问题,但我真的很想知道如何使用 data.table 解决它,因为我真的做到了艰难的道路。

我有以下数据table:

head(assets)
date   XPTO ACME
1: 2011-05-31 669.1328 50.25
2: 2011-06-01 674.6444 49.77
3: 2011-06-02 657.3590 49.85
4: 2011-06-03 NA 49.43
5: 2011-06-06 667.0009 49.05
6: 2011-06-07 NA 48.96

我需要用它之前的值替换每个 NA,就像在 for 循环中一样(我将跳过 for 语句以使其简短):

ifelse(is.na(assets[i])==TRUE, assets[i]<-assets[i-1], assets[i]<-assets[i])

有没有办法用 data.table 语法完成这样的任务?

列出的 fillNAgaps 函数 here 是否有效?您可以根据需要更改 firstBack 参数。如果你有两个 NA 连续,我相信它会再次放置相同的,如果那是你要找的。

您可以使用 zoo::na.locf().

assets[,XPTO := zoo::na.locf(XPTO)]

为了回答 jblood94 问题,此函数用最新的非 NA 值填充所有 NA。