R 将maxgap更改为值的结转次数
我有一个类似于以下内容的数据框:R 将maxgap更改为值的结转次数,r,na,zoo,locf,R,Na,Zoo,Locf,我有一个类似于以下内容的数据框: library(data.table) test <- data.table(data.frame("value" = c(5,NA,8,NA,NA,8,6,NA,NA,10), "locf_N" = c(1,NA,1,NA,NA,1,2,NA,NA,2)) ) 是否有任何参数可设置上一次观察可进行的次数?欢迎任何意见 期望输出: output <- data.table(data.fra
library(data.table)
test <- data.table(data.frame("value" = c(5,NA,8,NA,NA,8,6,NA,NA,10),
"locf_N" = c(1,NA,1,NA,NA,1,2,NA,NA,2)) )
是否有任何参数可设置上一次观察可进行的次数?欢迎任何意见
期望输出:
output <- data.table(data.frame("value" = c(5,5,8,8,NA,8,6,6,6,10),
"locf_N" = c(1,NA,1,NA,NA,1,2,NA,NA,2)) )
outputcumsum(!is.na(value))
是一个分组向量,它将每个非na与以下NAs分组。然后,对于每个这样的组,重复第一个值所需的次数,并将剩余值保留为NA
test[, list(value = replace(value, 1:min(.N, locf_N[1] + 1), value[1]), locf_N),
by = cumsum(!is.na(value))][, -1]
给予:
value locf_N
1: 5 1
2: 5 NA
3: 8 1
4: 8 NA
5: NA NA
6: 8 1
7: 6 2
8: 6 NA
9: 6 NA
10: 10 2
value locf_N
1: 5 1
2: 5 NA
3: 8 1
4: 8 NA
5: NA NA
6: 8 1
7: 6 2
8: 6 NA
9: 6 NA
10: 10 2