Mark Na
2010-Mar-23 18:27 UTC
[R] Conditional replacement of NA depending on value in the previous column
Dear R-helpers, I have a dataframe like this: ID X1 X2 X3 X4 X5 X6 49 1 1 1 0 NA NA 50 1 1 1 1 NA 1 I would like to convert a missing value (NA) that follows a 0 (zero) or another missing value (NA) into a 0 (zero). So, the above lines would be converted to: ID X1 X2 X3 X4 X5 X6 49 1 1 1 0 0 0 50 1 1 1 1 NA 1 I have been struggling with this all morning, so any help you could provide would be much appreciated. Thank you! Mark Na [[alternative HTML version deleted]]
Phil Spector
2010-Mar-23 18:51 UTC
[R] Conditional replacement of NA depending on value in the previous column
Mark -
Does this do what you want?
dat = data.frame(X1=c(1,1),X2=c(1,1),X3=c(1,1),
X4=c(0,1),X5=c(NA,NA),x6=c(NA,1))
fixit = function(x){
y = c(x[-1],0)
x[is.na(y) & is.na(x)] = 0
x}
t(apply(dat,1,fixit))
X1 X2 X3 X4 X5 x6
[1,] 1 1 1 0 0 0
[2,] 1 1 1 1 NA 1
- Phil Spector
Statistical Computing Facility
Department of Statistics
UC Berkeley
spector at stat.berkeley.edu
On Tue, 23 Mar 2010, Mark Na wrote:
> Dear R-helpers,
>
> I have a dataframe like this:
>
> ID X1 X2 X3 X4 X5 X6
> 49 1 1 1 0 NA NA
> 50 1 1 1 1 NA 1
>
> I would like to convert a missing value (NA) that follows a 0 (zero) or
> another missing value (NA) into a 0 (zero).
>
> So, the above lines would be converted to:
>
> ID X1 X2 X3 X4 X5 X6
> 49 1 1 1 0 0 0
> 50 1 1 1 1 NA 1
>
> I have been struggling with this all morning, so any help you could provide
> would be much appreciated.
>
> Thank you!
>
> Mark Na
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.
>