Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将maxgap更改为值的结转次数_R_Na_Zoo_Locf - Fatal编程技术网

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)) )
output
cumsum(!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