r语言 sampling 分层抽样之后怎么取剩下的数据
查看全部1个回答
邢小行要回家
TA获得超过223个赞
关注
成为第5位粉丝
对行号进行抽样,保存抽出样本的行号,在这些行号前加减号,取数据集的子集即可
>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
先把A、B的列宽设置好,用格式刷把其它列也刷一下,如果你的一页可以打印47行(是其它的数,就把公式里的47改一下)在C1里写公式:
=INDIRECT(CHAR(65+MOD(COLUMN(B1),2))&(ROW(A1)+INT(COLUMN(B1)/2)*47))
按住C1的填充柄将公式右拖复制,再按住填充柄下拖复制。
选定打印区域,打印。
函数说明:
CHAR(65+MOD(COLUMN(B1),2)) 生成字符串 "A" 或 "B"(偶数列为"A"奇数列为"B")。
(ROW(A1)+INT(COLUMN(B1)/2)*47 生成相应的行号。
INDIRECT() 生成字符串的引用。
对行号进行抽样,保存抽出样本的行号,在这些行号前加减号,取数据集的子集即可>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