使用 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。
我正在使用 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。