相关疑难解决方法(0)

仅使用data.table将NA替换为data.table中的最后一个非NA

我想,以取代NA与去年非NA值的值data.table和使用data.table。我有一个解决方案,但是它比na.locf

library(data.table)
library(zoo)
library(microbenchmark)

f1 <- function(x) {
    x[, X := na.locf(X, na.rm = F)]
    x
}

f2 <- function(x) {
    cond <- !is.na(x[, X])
    x[, X := .SD[, X][1L], by = cumsum(cond)]
    x
}

m1 <- data.table(X = rep(c(NA,NA,1,2,NA,NA,NA,6,7,8), 100))
m2 <- data.table(X = rep(c(NA,NA,1,2,NA,NA,NA,6,7,8), 100))

microbenchmark(f1(m1), f2(m2), times = 10)

#Unit: milliseconds
#   expr        min          lq      median          uq         max neval
# f1(m1)   2.648938    2.770792    2.959156    3.894635    6.032533    10
# f2(m2) …
Run Code Online (Sandbox Code Playgroud)

r na data.table

4
推荐指数
2
解决办法
1422
查看次数

标签 统计

data.table ×1

na ×1

r ×1