我是新用的R.我有一个数据框(nrow = 10200,ncol = 16),有20次重复。我想从每个复制中获取随机样本(例如1000行)并创建新数据帧(20000x16)。需要从原始数据帧中删除那些随机采样的行。我知道如何随机采样,但在采样时未能从原始文件中删除采样行。有关如何从数据框中删除随机样本的任何提示?
答案 0 :(得分:0)
怎么样?
while(nrow(df)>=1000){
smp <- sample(1:nrow(df),1000)
df1[[length(df1)+1]] <- df[smp]
df <- df[-smp]
}
答案 1 :(得分:0)
谢谢大家的回复! 我使用以下脚本解决了我的问题。我也感谢我的朋友B.Dagachew给我写了剧本。
col<-matrix(0,nrow=20000,ncol=16)
se<-seq(1,20000,1000)
for(i in 1:20){
df=read.table(paste("mspop.phen",i,sep=""), header=F, skip=1)
sam=sample(nrow(df),1000)
df_less<-df[-sam,]
col[se[i]:(se[i]+999),]<-as.matrix(df[sam,])
write.table(df_less,file=paste("pheno",i,sep=""), col.names=FALSE, row.names=FALSE, sep="\t")
}
write.table(col,file="sampled.d", col.names=FALSE, row.names=FALSE, sep="\t")