2017-02-10 5 views
1

Ich habe ein Datensatz wie dieseAusfüllen fehlenden Daten in R

pos value 
1 20 
2 30 
4 50 
5 50 
9 30 

Sie werden feststellen, dass 3, 6,7,8 Positionen und entsprechende Werteinträge fehlen. Ich mag sie mit Werten füllen 0 entsprechen, so dass die Daten wie diese

pos value 
1 20 
2 30 
3 0 
4 50 
5 50 
6 0 
7 0 
8 0 
9 30 

Irgendwelche Ideen, wie dies zu erreichen, in R aussehen?

+1

A 'merge' fortsetzen? 'merge (data.frame (pos = min (df $ pos): max (df $ pos)), df, all.x = TRUE)' –

Antwort

3

Wir complete von tidyr

library(tidyr) 
df1 %>% 
    complete(pos = full_seq(pos, 1), fill = list(value=0)) 
# A tibble: 9 × 2 
#  pos value 
# <dbl> <dbl> 
#1  1 20 
#2  2 30 
#3  3  0 
#4  4 50 
#5  5 50 
#6  6  0 
#7  7  0 
#8  8  0 
#9  9 30 

verwenden Wenn wir vielleicht bis 20

df1 %>% 
    complete(pos = full_seq(c(pos,20), 1), fill = list(value=0)) 
+0

Sehr dankbar! Kann ich Argumente für einen Anfang und ein Ende geben? Sagen wir, ich möchte, dass es weiterhin auf 20 steht, dh Positionen mit 10 bis 20 haben Werte gleich 0? – eastafri

+1

@eastafri Aktualisiert meinen Beitrag – akrun

Verwandte Themen