-
sample基本用法
參數(shù)解釋:x表示所要抽樣數(shù)據(jù)咱揍,size表示抽樣個數(shù),replace為T表示采取有重復的抽樣
代碼目的:在1到10間有放回的隨機抽取5個數(shù)
data=1:10
sample(x=data,size=5,replace=T)
data=1:10
#抽取列
sample(x=data,size=1,replace=T)
#抽取行
data[sample(nrow(data),2,replace=F),]
-
按一定比例抽取
代碼目的:將數(shù)據(jù)bdata按7:3比例劃分訓練集和測試集
set.seed(1234)
#按7:3的比例產(chǎn)生了1和2
index <- sample(x = 2,size = nrow(bdata),replace=TRUE,prob = c(0.7,0.3))
traindata <- bdata[index == 1,]
testdata <- bdata[index == 2,]
-
按某個字段分層抽取
代碼目的:將data數(shù)據(jù)集按s字段分組愿卸,在每一組里隨機抽取兩行,將抽取結果合并成數(shù)據(jù)框result
變量解釋
data原始數(shù)據(jù)集;
subdata將data按s字段分組后的小塊搓幌,類型為列表嫌佑,
subdata[[1]]則為其中第一個小數(shù)據(jù)框训挡;
x每個小數(shù)據(jù)框隨機抽取兩行的結果;
result最終抽樣結果
result<-data.frame()
data<-data.frame(a=c(1,2,3,4,6,7,8,5,11,12),b=c(2,3,4,5,65,4,6,6,8,9),s=c('A','B','A','A','B','A','B','A','B','B'))
subdata<-split(data,data$s)
for(i in 1:length(subdata)){
sub<-subdata[[i]]
x<-sub[sample(nrow(sub),2,replace=F),]
result<-rbind(result,x)
}
result