2017-08-26 53 views
0

我有一堆10x2表,缺少值夾在具有現有值的日期之間。我正在尋找從以前的信息中推斷缺失數據的最佳方法。例如:根據以前的值和特殊規則替換NAs

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。移至第二個NA(等)
  3. 如果沒有以前的NA(與1的情況一樣),則前進以找到第一個非NA。

所以最終的載體是

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

我知道我能得到我想要與

Missing = rev(which(is.na(x2))) 

來代替,然後使用一個for循環從那裏來港的名單。但是我承認,我並不是一個程序員,並且需要很長時間才能弄清楚(可能不得不蠻力)。有沒有一個可以輕鬆分類的軟件包,或者是這些數據清理問題的參考手冊?如果我真的瞭解它,並且它堅持與我在一起,我不介意花很多時間。

+0

可能與此貼有關? https://stackoverflow.com/questions/7735647/replacing-nas-with-latest-non-na-value –

+0

是的,似乎是重複的。我個人覺得這是最簡單的解決方案:https://rdrr.io/cran/tidyr/man/fill.html tidyr包 – Jan

+0

對不起,我確實試圖查看以前的條目但我唯一能找到-9的投票。我會繞過這些鏈接,謝謝。 – CoolGuyHasChillDay

回答

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)