拆分数据帧在两个子集中保持至少一个因子

时间:2016-11-01 12:42:42

标签: r dataframe split factors

我有一个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但不能将其应用于多个列,而不是示例中使用的单个列。

2 个答案:

答案 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,]

工作