Hi: Try this:
x <- matrix(c(rep(1:5, 9), rep(3, 3), 4), ncol = 7, byrow = TRUE) ## indices of x for which the value is less than 3 candidates <- which(x < 3, arr.ind = TRUE) # generates 18 candidates grabs <- sample(nrow(candidates), 15) # 15/49 ~ 0.3 x2 <- x # copy x x2[candidates[grabs, ]] <- NA x2 HTH, Dennis On Fri, Jun 3, 2011 at 5:49 AM, Blaz Simcic <blazsim...@yahoo.com> wrote: > Hello! > > I would like to sample 30 % of cases (with at least 1 value lower than 3) and > among them I want to set all values lower than 3 (within selected cases) as NA > (NMAR- Not missing at random). I managed to sample cases, but I don’t know how > to set values (lower than 3) as NA. > > R code: > > x <- > matrix(c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,3,3,3,4), > nrow = 7, ncol=7, byrow=TRUE) ####matrix > > pMiss <- 30 ####percent of missing values > > N <- dim(x)[1] ####number of cases > > candidate<-which(x[,1]<3 | x[,2]<3 | x[,3]<3 | x[,4]<3 | x[,5]<3 | x[,6]<3 | > x[,7]<3) #### I want to sample all cases with at least 1 value lower than > 3, > so I have to find candidates > > idMiss <- sample(candidate, N * p / 100) #### I sampled cases > > Any suggestion? > > Thanks, > Blaž > [[alternative HTML version deleted]] > > > ______________________________________________ > 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. > > ______________________________________________ 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.