2012-07-16 141 views
2

我試圖用最近的列數據回填完全外連接的表。使用來自同一數據幀的數據填充data.frame中的缺失值

我看起來像數據幀.. (沒有行的雙方都是NA,表格按日期排序)。

   date  X   Y 
2012-07-05 00:01:19 0.0122  NA 
2012-07-05 03:19:34 0.0121  NA 
2012-07-05 03:19:56 0.0121 0.027 
2012-07-05 03:20:31 0.0121  NA 
2012-07-05 04:19:56 0.0121 0.028 
2012-07-05 04:20:31 0.0121  NA 
2012-07-05 04:20:50 0.0121  NA 
2012-07-05 04:22:29 0.0121 0.027 
2012-07-05 04:24:37 0.0121  NA 
2012-07-05 20:48:45 0.0121  NA 
2012-07-05 23:02:34 NA  0.029 
2012-07-05 23:30:45 NA  0.029 

這一點,我期待..

  1. 離開非數據丟失行,因爲它是。
  2. 如果其中一方丟失(NA),則用「最接近的前面」行填充它,該行具有有效的反面值。

所以作爲結果,我想有表看起來像......

   date  X   Y 
2012-07-05 00:01:19 0.0122  NA 
2012-07-05 03:19:34 0.0121  NA 
2012-07-05 03:19:56 0.0121 0.027 
2012-07-05 03:20:31 0.0121 0.027 
2012-07-05 04:19:56 0.0121 0.028 
2012-07-05 04:20:31 0.0121 0.028 
2012-07-05 04:20:50 0.0121 0.028 
2012-07-05 04:22:29 0.0121 0.027 
2012-07-05 04:24:37 0.0121 0.027 
2012-07-05 20:48:45 0.0121 0.027 
2012-07-05 23:02:34 0.0121 0.029 
2012-07-05 23:30:45 0.0121 0.029 

我可以使用什麼樣的R命令來實現這一目標?

回答

5

zoo

dat <- read.table(text="2012-07-05 00:01:19 0.0122  NA 
2012-07-05 03:19:34 0.0121  NA 
2012-07-05 03:19:56 0.0121 0.027 
2012-07-05 03:20:31 0.0121  NA 
2012-07-05 04:19:56 0.0121 0.028 
2012-07-05 04:20:31 0.0121  NA 
2012-07-05 04:20:50 0.0121  NA 
2012-07-05 04:22:29 0.0121 0.027 
2012-07-05 04:24:37 0.0121  NA 
2012-07-05 20:48:45 0.0121  NA 
2012-07-05 23:02:34 NA  0.029 
2012-07-05 23:30:45 NA  0.029") 

require("zoo") 
na.locf(dat) 
#   V1  V2  V3 V4 
#1 2012-07-05 00:01:19 0.0122 <NA> 
#2 2012-07-05 03:19:34 0.0121 <NA> 
#3 2012-07-05 03:19:56 0.0121 0.027 
#4 2012-07-05 03:20:31 0.0121 0.027 
#5 2012-07-05 04:19:56 0.0121 0.028 
#6 2012-07-05 04:20:31 0.0121 0.028 
#7 2012-07-05 04:20:50 0.0121 0.028 
#8 2012-07-05 04:22:29 0.0121 0.027 
#9 2012-07-05 04:24:37 0.0121 0.027 
#10 2012-07-05 20:48:45 0.0121 0.027 
#11 2012-07-05 23:02:34 0.0121 0.029 
#12 2012-07-05 23:30:45 0.0121 0.029 
+0

謝謝你的方向,它的工作確實和一些我有指定na.rm = F選項的原因,並得到了我真正想要的。再次感謝! – beaglebagel 2012-07-17 00:45:29

2

也許使用na.locf你應該試試這個

> library(zoo) 
> na.locf(Data) 
       x  y 
2012-07-17 0.0122 <NA> 
2012-07-18 0.0121 <NA> 
2012-07-19 0.0121 0.027 
2012-07-20 0.0121 0.027 
2012-07-21 0.0121 0.028 
2012-07-22 0.0121 0.028 
2012-07-23 0.0121 0.028 
2012-07-24 0.0121 0.027 
2012-07-25 0.0121 0.027 
2012-07-26 0.0121 0.027 
2012-07-27 0.0121 0.029 
2012-07-28 0.0121 0.029 

其中Data是您data.frame

+0

不錯的答案......雖然比@GSee晚了5分鐘。 ;-) – 2012-07-16 20:52:00

+0

是的,我最好是下次更快;) – 2012-07-16 21:00:54

+0

謝謝你的指導,只能選擇一個答案,雖然:( – beaglebagel 2012-07-17 00:46:19

相關問題