>set.seed(1234)
>( x <- data.frame(a=sample(c(1,0),10,replace=T),b=11:20) )
a b
1 1 11
2 0 12
3 0 13
4 0 14
5 0 15
6 0 16
7 1 17
8 1 18
9 0 19
10 0 20
>( row_1 <- which(x$a==1) )
[1] 1 7 8
>( row_0 <- which(x$a==0) )
[1] 2 3 4 5 6 9 10
>( index1 <- sample(row_1,2) )
[1] 8 7
>( index0 <- sample(row_0,2) )
[1] 3 9
#抽样
>( sub1 <- x[c(index1,index0),] )
a b
8 1 18
7 1 17
3 0 13
9 0 19
#剩余
>( sub2 <- x[-c(index1,index0),] )
a b
1 1 11
2 0 12
4 0 14
5 0 15
6 0 16
10 0 20
#1.如果总体是自然数这样的等差数列,可以直接利用seq函数挑出奇数(或偶数):n <- 1:100
( ji <- seq(from=1,to=100,by=2) )
( ou <- setdiff(n,ji) )
rm(ji)rm(ou)
#2.如果总体是杂乱无章的集合,可以写个小函数判断某个数的奇偶:
jishu <- function(x){
ifelse(x%%2 ==0,F,T)
}
( ji <- n[jishu(n)] )
( ou <- n[!jishu(n)] )
#通过上面的任一一种方法将总体的奇数偶数区分开,接下来就可以使用sample函数抽样了:
sample(ji,5)
即随机抽样。sample(x, size, replace = FALSE, prob = NULL)replace=F,表示不重复抽样replace=T 表示可以重复抽样x=1:5sample(x,6,replace=T) #重复抽样[1] 1 2 1 4 4 3sample(x,2,replace=F) #不重复[1] 4 5