如何从r中的数据帧中删除随机样本

时间:2016-02-02 20:20:21

标签: r random

我是新用的R.我有一个数据框(nrow = 10200,ncol = 16),有20次重复。我想从每个复制中获取随机样本(例如1000行)并创建新数据帧(20000x16)。需要从原始数据帧中删除那些随机采样的行。我知道如何随机采样,但在采样时未能从原始文件中删除采样行。有关如何从数据框中删除随机样本的任何提示?

2 个答案:

答案 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")