将数据帧拆分为两个随机样本,其中包含多个变量的相等比例

时间:2017-07-27 15:57:55

标签: r dataframe random

我正在尝试对具有不等分布因子水平的glm模型运行k-folds交叉验证,因此当我将数据拆分为单独的校准/验证数据帧时,我不可避免地会出现某些因子水平仅存在于其中一个。

所以说我有以下数据框:

set.seed(3.14)
df<-data.frame(x1=sample(0:1,size=100,replace=T),
               x2=sample(0:2,size=100,replace=T),
               y =sample(0:1,size=100,replace=T))
df<-as.data.frame(apply(df,MARGIN=2,FUN=as.factor))
> sapply(df,FUN=summary)
$x1
0  1 
51 49 

$x2
0  1  2 
37 32 31 

$y
0  1 
48 52 

如何将其随机分成两个数据帧,所有变量的因子水平比例都相等?

例如,80/20拆分的摘要如下所示:

校准:

$x1
0   1
41  39
$x2
0    1   2
30   26  25
$y
0   1
38  42

验证:

$x1
0   1
10  10
$x2
0   1  2
7   6  6
$y
0   1
10  10

注意:这是一个简化的例子。实际数据有20多个变量,多达9或10个因子水平。

此外,如果有人知道更好的方法来解决这个问题,我愿意接受建议。

0 个答案:

没有答案