我有一个20万行,10列的数据框。 (为了便于阅读,这里仅包括3个)
P
我正在尝试将数据拆分为两个子集 - 培训和测试。
df=data.frame(A=rep(letters[1:20],10000),B=rep(letters[2:21],10000),C=rep(letters[3:22],10000))
有没有办法从df中取样,这样每个结果子集中至少有一个因子?也就是说,从A-J列开始,我想要训练集和测试集中每个因子的至少一个实例。
我尝试Random subset containing at least one instance of each factor但不能将其应用于多个列,而不是示例中使用的单个列。
答案 0 :(得分:0)
我认为您正在寻求分层抽样。 R中有几个选项可以做,例如strata
包中的sampling
。查看this discussion。
答案 1 :(得分:0)
s=createDataPartition(paste(df$A, df$B,df$C),p=.6,list=FALSE)
training=df[s,]
testing=df[-s,]
工作