2016-04-10 6 views
1

Meine Daten wie dieser Satzaufzufüllen NA s Spalte von Datenrahmen R Datum

> 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 

Die Daten sehen ich will, ist

> 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 

Der Code ich verwende ist

> 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 

Jede Hilfe zu diesem Thema wird sehr geschätzt

+1

Ich denke, es gibt einen Tippfehler in Ihrer erwarteten Ausgabe. Sollte das vierte Element nicht "2015-01-01" sein? – akrun

Antwort

1

Wir brauchen die na.rm=FALSE. Standardmäßig ist es na.rm=TRUE, die die Werte NA am Anfang entfernt, so dass die Ausgabe weniger Elemente als im ursprünglichen Dataset haben wird. Die dplyr::mutate funktioniert nur, wenn die Ausgabeelemente dieselbe length wie das ursprüngliche Dataset haben.

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