R数据帧-如果滞后值为NA,则取前一个

时间:2019-05-24 14:52:29

标签: r dataframe na

我的df看起来像这样

df <- read.table(text="
  id           date           
  2              NA
  2      2018-11-01
  2              NA     
  2              NA 
  2      2019-11-01 
  2              NA  
  3      2018-01-01
  3              NA      
  3              NA    
  3              NA        
", header=TRUE)

我的目标是通过上面的值填充NA。但是一旦价值不是NA,那么我想用它填充下一个NA。换句话说,结果应如下所示:

result <- read.table(text="
  id           date           
  2              NA
  2      2018-11-01
  2      2018-11-01     
  2      2018-11-01
  2      2019-11-01 
  2      2019-11-01  
  3      2018-01-01
  3      2018-01-01      
  3      2018-01-01    
  3      2018-01-01        
", header=TRUE)

请注意,id 2的第一行是NA,由于它上面没有行,所以值仍然是NA,

1 个答案:

答案 0 :(得分:1)

选项为fill

library(dplyr)
df %>% 
    group_by(id) %>% 
    fill(date)