Desidero implementare un "Ultima osservazione effettuata" per un set di dati su cui sto lavorando e che alla fine presenta valori mancanti.Ultima osservazione eseguita in avanti in un frame di dati?
Ecco un semplice codice per farlo (domanda dopo):
LOCF <- function(x)
{
# Last Observation Carried Forward (for a left to right series)
LOCF <- max(which(!is.na(x))) # the location of the Last Observation to Carry Forward
x[LOCF:length(x)] <- x[LOCF]
return(x)
}
# example:
LOCF(c(1,2,3,4,NA,NA))
LOCF(c(1,NA,3,4,NA,NA))
Ora, questo funziona alla grande per i vettori semplici. Ma se dovessi provare a usarlo su un frame di dati:
a <- data.frame(rep("a",4), 1:4,1:4, c(1,NA,NA,NA))
a
t(apply(a, 1, LOCF)) # will make a mess
Trasforma il mio frame di dati in una matrice di caratteri.
Riesci a pensare a un modo di fare LOCF su un data.frame, senza trasformarlo in una matrice? (Ho potuto utilizzare i loop e tale da correggere il disordine, ma mi piacerebbe per una soluzione più elegante)
Cheers,
Tal
+1 e rseek.org naturalmente colpisce immediatamente questo come primi risultati. –
La mia offerta per non vederlo - grazie Shane. Ma temo che non faccia il lavoro. (riempie la colonna 3, invece di ogni riga) –
Potresti averlo trovato anche se hai cercato stackoverflow.com per '[r] locf'. – Shane