通过保持最新创建的最后一个值的状态来对向量进行突变

时间:2018-10-19 06:36:55

标签: r dplyr mutate

我有一个像这样的数据框:

# A tibble: 14 x 1
   inventory
     <int>
 1       3
 2       4
 3       NA
 4       5
 5       NA
 6       NA
 7       NA
 8       NA
 9       10
10       14
11       NA
12       NA
13       NA
14       16

我想用最后一个可用值替换NA值。

对于第3行,我可以执行以下操作:

df %>%
  mutate(
    inventory2 = ifelse(
      !is.na(inventory),
      inventory,
      lag(inventory)
    )
  )

但是对于第5到8行,我想保留新创建的向量inventory2的最后一个值。换句话说,就是引用自己。

我尝试了以下操作,但不起作用

df %>%
  mutate(
    inventory2 = ifelse(
      !is.na(inventory),
      inventory,
      lag(inventory2) # reference to itself doesn't work
    )
  )

for循环也非常慢。

最终输出应为:

# A tibble: 14 x 1
   inventory inventory2
       <int>      <int>
 1         3          3
 2         4          4
 3        NA          4
 4         5          5
 5        NA          5
 6        NA          5
 7        NA          5
 8        NA          5
 9        10         10
10        14         14
11        NA         14
12        NA         14
13        NA         14
14        16         16

可以这样做吗?

感谢您的帮助

0 个答案:

没有答案