我正在对数据表进行预测,有时尾部会有NA值。这些值目前还不可用,可以被删除。如何删除系列末尾的NA值?
library(data.table)
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
DT[c(4, 8:9), v := NA]
# required output:
DT[, head(.SD, 7 )]
我正在对数据表进行预测,有时尾部会有NA值。这些值目前还不可用,可以被删除。如何删除系列末尾的NA值?
library(data.table)
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
DT[c(4, 8:9), v := NA]
# required output:
DT[, head(.SD, 7 )]
查找最后一个非NA
值并保留其之前的所有内容:
DT[ seq( max(which(!is.na(v))) ) ]
which.max
:DT[ seq( .N-which.max(rev(!is.na(v)))+1L ) ]
NA
,那么这两个选项都可以正常工作。v
完全是NA
,它们的行为将不同:max(which(!is.na(v)))
会返回-Inf
,因为which
将返回一个空向量。这将导致seq
抛出错误。
- which.max(rev(!is.na(v))
将返回1
,因为FALSE
是最大值,在位置1处找到。这意味着将返回所有行。