Hi David, I was about to post a reply when Bert responded. His answer is good and his comment to use the name 'dat' rather than 'data' is instructive. I am providing my suggestion as well because I think it may address what was causing you some confusion (mainly to use "which", but also the missing !)
idx2 <- sample( which( (!data$var1%%2) & data$sampleNo==0 ), size=10, replace=F) data[idx2,]$sampleNo <- 2 Eric On Mon, Sep 25, 2017 at 9:03 PM, Bert Gunter <[email protected]> wrote: > For personal aesthetic reasons, I changed the name "data" to "dat". > > Your code, with a slight modification: > > set.seed (1357) ## for reproducibility > dat <- data.frame(var1=seq(1:40), var2=seq(40,1)) > dat$sampleNo <- 0 > idx <- sample(seq(1,nrow(dat)), size=10, replace=F) > dat[idx,"sampleNo"] <-1 > > ## yielding > > dat > > var1 var2 sampleNo > 1 1 40 0 > 2 2 39 1 > 3 3 38 0 > 4 4 37 0 > 5 5 36 0 > 6 6 35 1 > 7 7 34 0 > 8 8 33 0 > 9 9 32 0 > 10 10 31 0 > 11 11 30 0 > 12 12 29 0 > 13 13 28 0 > 14 14 27 0 > 15 15 26 1 > 16 16 25 1 > 17 17 24 0 > 18 18 23 0 > 19 19 22 0 > 20 20 21 1 > 21 21 20 0 > 22 22 19 1 > 23 23 18 0 > 24 24 17 1 > 25 25 16 0 > 26 26 15 1 > 27 27 14 0 > 28 28 13 0 > 29 29 12 0 > 30 30 11 0 > 31 31 10 0 > 32 32 9 0 > 33 33 8 0 > 34 34 7 0 > 35 35 6 1 > 36 36 5 0 > 37 37 4 1 > 38 38 3 0 > 39 39 2 0 > 40 40 1 0 > > ## This is basically a transcription of your specification into indexing > logic > > dat <- within(dat,sampleNo[sample(var1[(var1%%2 == 0) & > sampleNo==0],10,rep=FALSE)] <- 2) > > ##yielding > > dat > > var1 var2 sampleNo > 1 1 40 0 > 2 2 39 1 > 3 3 38 0 > 4 4 37 2 > 5 5 36 0 > 6 6 35 1 > 7 7 34 0 > 8 8 33 2 > 9 9 32 0 > 10 10 31 2 > 11 11 30 0 > 12 12 29 0 > 13 13 28 0 > 14 14 27 2 > 15 15 26 1 > 16 16 25 1 > 17 17 24 0 > 18 18 23 2 > 19 19 22 0 > 20 20 21 1 > 21 21 20 0 > 22 22 19 1 > 23 23 18 0 > 24 24 17 1 > 25 25 16 0 > 26 26 15 1 > 27 27 14 0 > 28 28 13 2 > 29 29 12 0 > 30 30 11 2 > 31 31 10 0 > 32 32 9 2 > 33 33 8 0 > 34 34 7 2 > 35 35 6 1 > 36 36 5 2 > 37 37 4 1 > 38 38 3 0 > 39 39 2 0 > 40 40 1 0 > > > > > > dat <- within(dat,sampleNo[sample(var1[(var1%%2 == 0) & > sampleNo==0],10,rep=FALSE)] <- 2) > > > > > Bert Gunter > > "The trouble with having an open mind is that people keep coming along and > sticking things into it." > -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > > On Mon, Sep 25, 2017 at 10:27 AM, David Studer <[email protected]> wrote: > > > Hello everybody! > > > > I have the following problem: I'd like to select a sample from a > subsample > > in a dataset. Actually, I don't want to select it, but to create a new > > variable sampleNo that indicates to which sample (one or two) a case > > belongs to. > > > > Lets suppose I have a dataset containing 40 cases: > > > > data <- data.frame(var1=seq(1:40), var2=seq(40,1)) > > > > The first sample (n=10) I drew like this: > > > > data$sampleNo <- 0 > > idx <- sample(seq(1,nrow(data)), size=10, replace=F) > > data[idx,]$sampleNo <- 1 > > > > Now, (and here my problems start) I'd like to draw a second sample > (n=10). > > But this sample should be drawn from the cases that don't belong to the > > first sample only. *Additionally, "var1" should be an even number.* > > > > So sampleNo should be 0 for cases that were not drawn at all, 1 for cases > > that belong to the first sample and 2 for cases belonging to the second > > sample (= sampleNo equals 0 and var1 is even). > > > > I was trying to solve it like this: > > > > idx2<-data$var1%%2 & data$sampleNo==0 > > sample(data[idx2,], size=10, replace=F) > > > > But how can I set sampleNo to 2? > > > > > > Thank you very much for your help! > > > > David > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > [email protected] mailing list -- To UNSUBSCRIBE and more, see > > 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. > > > > [[alternative HTML version deleted]] > > ______________________________________________ > [email protected] mailing list -- To UNSUBSCRIBE and more, see > 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. > [[alternative HTML version deleted]] ______________________________________________ [email protected] mailing list -- To UNSUBSCRIBE and more, see 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.

