2016-05-11 18 views
1

Ich habe eine Zeitreihe von täglichen Niederschlagsdaten von 1843-2016, aber einige der Tage in der Aufzeichnung fehlen vollständig. Ich möchte Daten für die Tage mit fehlenden Daten ausfüllen und gebe diesem einen fehlenden N/A Code in der Niederschlagsspalte. Ist das möglich?Daten ausfüllen

nimmt Meine Daten die Form:

Year Month Day Rainfall (mm) 
1843 1 1  4.3 
1843 1 2  0.0 
1843 1 3  1.1 
1843 1 5  0.0 

Antwort

3

Wir mit dplyr/tidyr versuchen. Erstellen Sie eine Sequenz von 'Daten' vom ersten Tag von '1843' bis zum letzten Tag von '2016', konvertieren Sie sie in data.frame, separate in 'Jahr', 'Monat' und 'Tag', dann left_join mit dem ursprünglichen Dataset ('df1'), so dass die fehlenden Kombinationen in der Spalte "Regenfall" über NA verfügen.

Dates <- seq(as.Date("1843-01-01"), as.Date("2016-12-31"), by = "1 day") 
library(tidyr) 
library(dplyr) 
data_frame(Dates) %>% 
    separate(., Dates, into = c("Year", "Month", "Day"), convert=TRUE) %>% 
    left_join(., df1, by = c("Year", "Month", "Day")) 

ein reproduzierbares kleines Beispiel Mit

df1 <- data.frame(Year = 1843, Month = 1, Day = c(1, 5, 7, 10), Rainfall= c(4.3, 0, 1.1, 0)) 
Dates <- seq(as.Date("1843-01-01"), as.Date("1843-01-10"), by = "1 day") 
data_frame(Dates) %>% 
    separate(., Dates, into = c("Year", "Month", "Day"), convert=TRUE) %>% 
    left_join(., df1, by = c("Year", "Month", "Day")) 
# Year Month Day Rainfall 
# <dbl> <dbl> <dbl> <dbl> 
#1 1843  1  1  4.3 
#2 1843  1  2  NA 
#3 1843  1  3  NA 
#4 1843  1  4  NA 
#5 1843  1  5  0.0 
#6 1843  1  6  NA 
#7 1843  1  7  1.1 
#8 1843  1  8  NA 
#9 1843  1  9  NA 
#10 1843  1 10  0.0 
+0

Das gibt: "Fehler: kann nicht auf Spalten 'Jahr' x 'Jahr' beitreten: Index außerhalb der Grenzen" –

+0

@ DJ-AFC Wenn die Spaltennamen sind gleich und haben die gleiche Klasse, es sollte funktionieren – akrun

+1

Ich musste die Spaltenüberschriften im ursprünglichen Datenrahmen umbenennen, aber als ich das tat, funktionierte es perfekt. Vielen Dank @akrun –