2016-04-08 5 views
0

sehen Meine Daten wie dieseExtrapolieren von letzten verfügbaren Wert in R

> data 
    ID Price 
1 1  1 
2 2  3 
3 3 NA 
4 4 NA 
5 5  7 
6 6  6 
7 7 NA 
8 8 NA 
9 9 NA 
10 10 10 

Ich mag verfügbar durch den letzten Wert Werte zu extrapolieren, so dass meine Daten wie diese Jede Hilfe

> data_final 
    ID Price 
1 1  1 
2 2  3 
3 3  3 
4 4  3 
5 5  7 
6 6  6 
7 7  6 
8 8  6 
9 9  6 
10 10 10 

sehen wäre sehr geschätzt

+0

Siehe -eg- [hier] (http://stackoverflow.com/questions/22693173/ imputing-missing-values-linear-in-r), [hier] (http://stackoverflow.com/questions/7188807/interpolate-na-values) und die Argumente zu "approx" –

+0

Hmm welche Methode ist robust gegen ein NA an der ersten Stelle – chinsoon12

Antwort

4

Wir na.locf

library(zoo) 
data$Price <- na.locf(data$Price) 
data$Price 
#[1] 1 3 3 3 7 6 6 6 6 10 
verwenden können
+1

das war super! –

1

Sie fill in tidyr Hier

library(tidyr) 
> fill(df, Price) 
ID Price 
1 1  1 
2 2  3 
3 3  3 
4 4  3 
5 5  7 
6 6  6 
7 7  6 
8 8  6 
9 9  6 
10 10 10 
0

verwenden können, ist ein Verfahren, bei Base R:

# construct data.frame 
data <- data.frame("ID"=1:10, "Price"=c(1,3,NA,NA,7,6,NA,NA,NA,10)) 
# loop through vector iteratively replacing subsets of missing values 
while(any(is.na(data$Price))) { 
    data[, "Price"][is.na(data$Price)] <- data[, "Price"][which(is.na(data$Price))-1] 
Verwandte Themen