Hello -

Jia Ying Mei wrote:
Hi,

I know this can be done in Stata (which is quite messy) but I wanted to know if it can be done in R. So lets say I have a merged data set (I used the merge function by date for the attached two files), where all the missing values are filled with NAs (which is what the all.x=TRUE does).

Is there any way to replace those NAs with the value of the latest row that contains a value?

For example:

 > Date<-read.table("Desktop/R/Testdate.txt", head=T, sep="\t")
 > Data<-read.table("Desktop/R/Testinput.txt", head=T, sep="\t")
 > Merged<-merge(Date, Data, all.x=TRUE)
 > Merged
    Date France Germany
1 3/10/07      2       4
2 3/11/07     NA      NA
3 3/12/07     NA      NA
4 3/13/07     NA      NA
5 3/14/07     NA      NA
6 3/15/07      1       2

Given this Merged data, is there a way to replace every NA value from 3/11 to 3/14 with that of 3/15? But then say there are multiple intervals with NAs that I want to fill with the last given value?


Yes, no loop necessary.

# begin R code
install.packages("zoo")
library(zoo)

Merged$France <- na.locf(Merged$France, fromLast = TRUE)

# end R code


This will of course work on the 'France' column. Use of lapply in conjuction with this idea will lead to solving this problem for N columns in a couple lines of R. Not messy at all!

Best Regards,
Erik Iverson

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to