Moje dane mają ten format i ramka o nazwie ex:
Day value1 value2
12-12-2012 00:00:00 1 1
12-12-2012 00:00:02 NA 2
12-12-2012 00:00:03 1 NA
12-12-2012 00:00:04 NA 4
12-12-2012 00:00:00 2 1
12-12-2012 00:00:02 NA 2
12-12-2012 00:00:03 2 NA
12-12-2012 00:00:04 NA 4
Wynik, który chcę, to:
Day value1 value2
12-12-2012 00:00:00 1 1
12-12-2012 00:00:02 1 2
12-12-2012 00:00:03 1 NA
12-12-2012 00:00:04 1 4
12-12-2012 00:00:00 2 1
12-12-2012 00:00:02 2 2
12-12-2012 00:00:03 2 NA
12-12-2012 00:00:04 2 4
Co próbowałem:
fl = na.locf(ex$value1)
Jednak problem polega na usunięciu wartości 2. Jak mogę użyć na.locf w określonej kolumnie w ramce z wieloma kolumnami, aby je usunąć?
Odpowiedzi:
2 dla odpowiedzi № 1require(zoo)
dat <- read.table(text="
Day value1 value2
12-12-2012 00:00:00 1 1
12-12-2012 00:00:02 NA 2
12-12-2012 00:00:03 1 NA
12-12-2012 00:00:04 NA 4
12-12-2012 00:00:00 2 1
12-12-2012 00:00:02 NA 2
12-12-2012 00:00:03 2 NA
12-12-2012 00:00:04 NA 4",header=TRUE, row.names=NULL)
dat$value1 <- na.locf(dat$value1)
1 dla odpowiedzi nr 2
Próbowałem odtworzyć twój problem, ale dla mnie sugerujesz, że rozwiązanie działa tak, jak chcesz.
> require(zoo)
> ex <-data.frame(
Day =c("12-12-2012 00:00:00","12-12-2012 00:00:02","12-12-2012 00:00:03","12-12-2012 00:00:04","12-12-2012 00:00:00","12-12-2012 00:00:02","12-12-2012 00:00:03","12-12-2012 00:00:04"),
value1 = c(1,NA,1,NA,2,NA,2,NA),
value2 = c(1,2,3,4,1,2,3,4))
> fl = na.locf(ex)
> fl
Day value1 value2
1 12-12-2012 00:00:00 1 1
2 12-12-2012 00:00:02 1 2
3 12-12-2012 00:00:03 1 3
4 12-12-2012 00:00:04 1 4
5 12-12-2012 00:00:00 2 1
6 12-12-2012 00:00:02 2 2
7 12-12-2012 00:00:03 2 3
8 12-12-2012 00:00:04 2 4
Może coś jeszcze jest nie tak?