2016-11-09 38 views
0

我已經合併了幾個時間序列在一起,我需要數據的子集,以便第一行沒有NA。在第一行的下面,可以有NAs,即使在整行中也是如此。我將不得不通過插值來照顧他們。 下面是一個簡化的數據例如:R - 刪除一個動物園對象的空行只有一部分

DF <- data.frame(x = c(NA, NA, 3, 2, 6, NA, 5), y = c(NA, NA, 24, 11, NA, NA, 8), z=c(NA, NA, NA, 33, 22, NA, 19)) 
date <- c("2001-03-30", "2001-03-31", "2001-04-01", "2001-04-02", "2001-04-03", "2001-04-04", "2001-04-05") 
DFz <- zoo(DF, order.by = date) 
DFz 
x y z 
2001-03-30 NA NA NA 
2001-03-31 NA NA NA 
2001-04-01 3 24 NA 
2001-04-02 2 11 33 
2001-04-03 6 NA 22 
2001-04-04 NA NA NA 
2001-04-05 5 8 19 

我想獲得是一個新的動物園矩陣從第一行不具有的NA開始,(即,從在上面的例子中的第四行),最後的NA第一行下面的行必須保留。我想獲得此:

2001-04-02 2 11 33 
2001-04-03 6 NA 22 
2001-04-04 NA NA NA 
2001-04-05 5 8 19 

我嘗試了多種不同的方式,但我真的不知道該怎麼做。 有什麼建議嗎?

+3

na.trim.ts(DFz) – Henk

+0

Thanks @Henk!實際上na.trim.ts(DFz)給了我一個警告信息,但按照你的建議,我發現並嘗試了一個簡單的na.trim(DFz),它完美的工作! – stem

+0

請注意,如果最後一行也有NAs,它們將被'na.trim'函數修剪。 –

回答

2

嘗試na.trim將派遣na.trim.zoo方法:

na.trim(DFz, sides = "left") 

,並提供:

  x y z 
2001-04-02 2 11 33 
2001-04-03 6 NA 22 
2001-04-04 NA NA NA 
2001-04-05 5 8 19 

默認情況下,從兩側na.trim裝飾,所以我們使用sides確保尾隨NA的保持。

注意:您可能希望熟悉各種na.*動物園方法。它們應該列在這個命令的輸出之中:

apropos("^na[.]") 
+0

謝謝!我使用了幾個na。*,但沒有想到使用apropos並搜索一個我不知道的na。*。 – stem