Skip to content
Prev 318593 / 398503 Next

replace zeros for NA in a column based on values of another column

HI,

Not sure I understand it correctly,

data1<-read.table(text="
?a????? b????? c????? d
?0????? 1????? 1????? 0
?1????? 1????? 1????? 1
?1????? 0????? 0????? 1
",sep="",header=TRUE)
data2<- data1
data3<- data1
If i follow this logic for the 1st and 2nd columns,
?data1[ data1[ , 4 ] == 0 , 1 ] <- NA
?data1[ data1[ , 4 ] == 0 , 2 ] <- NA
?data1
#?? a? b c d
#1 NA NA 1 0
#2? 1? 1 1 1
#3? 1? 0 0 1

Still, the column 'b' with 0 element is left as such while and `1` in b is replaced with NA

? data2[,1][data2[,4]==0 & data2[,1]==0]<- NA
?data2[,2][data2[,4]==0 & data2[,2]==0]<- NA
?data2
#?? a b c d
#1 NA 1 1 0
#2? 1 1 1 1
#3? 1 0 0 1

#or you can try
data3[,1:2]<- lapply(letters[1:2],function(x) {x1<-cbind(data3[,x],data3[,4]);colnames(x1)<- c(x,"d");x1; x1[rowSums(x1)==0,1]<-NA;x1[,1]})
?data3
#?? a b c d
#1 NA 1 1 0
#2? 1 1 1 1
#3? 1 0 0 1

A.K.




----- Original Message -----
From: Anthony Damico <ajdamico at gmail.com>
To: Camilo Mora <cmora at dal.ca>
Cc: R help <r-help at r-project.org>
Sent: Saturday, March 2, 2013 6:10 AM
Subject: Re: [R] replace zeros for NA in a column based on values of another column

you want to replace all rows where the 4th column is zero..? (data[ , 4 ]
== 0)
and you want to perform that replacement in the first column..

so try

data[ data[ , 4 ] == 0 , 1 ] <- NA
On Sat, Mar 2, 2013 at 5:26 AM, Camilo Mora <cmora at dal.ca> wrote:

            
??? [[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.