2016-04-10 40 views
1

我的數據是這樣的填補NA S IN最新數據幀的R列

> sample 
    ID Date 
1 1 NA 
2 1 NA 
3 1 16436 
4 1 NA 
5 2 NA 
6 2 16436 
7 2 NA 
8 2 NA 

的數據集我想是

> final 
    ID  Date 
1 1  <NA> 
2 1  <NA> 
3 1 2015-01-01 
4 1  <NA> 
5 2  <NA> 
6 2 2015-01-01 
7 2 2015-01-01 
8 2 2015-01-01 

我使用的代碼是

> final <- sample %>% 
+ group_by(ID) %>% 
+ mutate(Date = zoo:: na.locf(as.Date(Date,origin= "1970-01-01"))) 
Error: incompatible size (2), expecting 4 (the group size) or 1 

在這個問題上的任何幫助將不勝感激

+1

我認爲您的預期輸出中存在拼寫錯誤。第四個元素不應該是'2015-01-01'嗎? – akrun

回答

1

我們需要na.rm=FALSE。默認情況下,它是na.rm=TRUE,它將在開始時刪除NA值,以便輸出的元素數量少於原始數據集中的元素數量。當輸出元素與原始數據集具有相同的length時,dplyr::mutate將僅適用。

library(zoo) 
library(dplyr) 
sample %>% 
    group_by(ID) %>% 
    mutate(Date = na.locf(as.Date(Date, origin = '1970-01-01'), na.rm=FALSE)) 
#  ID  Date 
# (int)  (date) 
#1  1  <NA> 
#2  1  <NA> 
#3  1 2015-01-01 
#4  1 2015-01-01 
#5  2  <NA> 
#6  2 2015-01-01 
#7  2 2015-01-01 
#8  2 2015-01-01