r语言 sampling 分层抽样之后怎么取剩下的数据

Python016

r语言 sampling 分层抽样之后怎么取剩下的数据,第1张

行号进行抽样,保存抽出样本的行号,在这些行号前加减号,取数据集的子集即可

>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