[R] conditional statement to replace values in dataframe with NA

arun smartpink111 at yahoo.com
Thu Jun 7 07:02:16 CEST 2012


Hi,

Try this,> dat1 <- data.frame(x=rep(1,6),y=rep(1:3,2), fac=sample(L3, 6, replace=TRUE))
> dat1
  x y fac
1 1 1   C
2 1 2   B
3 1 3   B
4 1 1   A
5 1 2   B
6 1 3   B
> dat1[dat1$x==1&dat1$y==1,1:2]<-NA
> dat1
   x  y fac
1 NA NA   C
2  1  2   B
3  1  3   B
4 NA NA   A
5  1  2   B
6  1  3   B


A.K.



----- Original Message -----
From: Daisy Englert Duursma <daisy.duursma at gmail.com>
To: "r-help at R-project.org" <r-help at r-project.org>
Cc: 
Sent: Wednesday, June 6, 2012 11:58 PM
Subject: [R] conditional statement to replace values in dataframe with NA

Hello and thanks for helping.

#some data
L3 <- LETTERS[1:3]
dat1 <- data.frame(cbind(x=1, y=rep(1:3,2), fac=sample(L3, 6, replace=TRUE)))


#When x==1 and y==1 I want to replace the 1 values with NA

#I can select the rows I want:
dat2<-subset(dat1,x==1 & y==1)
#replace the 1 with NA
dat2$x<-rep(NA,nrow(dat2)
dat2$y<-rep(NA,nrow(dat2)

#select the other rows and rbind everything back together
#This is where I get stuck

#The end dataframe will look something like:

  x y  fac
NA NA   B
NA NA   A
1 2   C
1 3   C
1 2   C
1 3   A

#Is there a better way to do this where I do not need to subset
perhaps using lapply?


Thanks,
Daisy

--
Daisy Englert Duursma
Department of Biological Sciences
Room E8C156
Macquarie University, North Ryde, NSW 2109
Australia

Tel +61 2 9850 9256

______________________________________________
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.




More information about the R-help mailing list