根据先前的值替换NA并且特殊规则

时间:2017-08-26 07:46:54

标签: r

我有一堆10x2表,其中缺少值夹在具有现有值的日期之间。我正在寻找从先前信息推断缺失数据的最佳方法。例如:

x1 <- c(1:10)
x2 <- c(NA, 'a', 'a', NA, 'a', 'b', 'b', NA, NA, 'c')
DF <- data.frame(x1,x2)
DF

x1   x2
1 <NA>
2    a
3    a
4 <NA>
5    a
6    b
7    b
8 <NA>
9 <NA>
10    c

我希望使用以下算法找到缺失的值:

  1. 查找NA的最后一个实例。
  2. 向后工作,用第一个非NA替换NA。移至第2位至最后NA(等)
  3. 如果没有以前的NA(与1的情况一样),那么请继续前进,找到第一个非NA。
  4. 所以最终的载体是

    a, a, a, a, a, b, b, b, b, c
    

    我知道我可以通过

    获取我要替换的NA列表
    Missing = rev(which(is.na(x2)))
    

    然后从那里使用for循环。但我承认我不是那么优秀的程序员,并且会花很长时间才弄明白(可能不得不蛮力)。是否有一个可以轻松解决这个问题的软件包,或者是针对这些类型的数据清理问题的参考手册?如果我真的学习它并且它坚持我,我不介意花很多时间在它上面。

1 个答案:

答案 0 :(得分:0)

希望这有帮助!

library(dplyr)
library(tidyr)
df <- data.frame(x1= c(1:10), x2= c(NA, 'a', 'a', NA, 'a', 'b', 'b', NA, NA, 'c'))
df1 <- df %>% fill(x2)