我正在尝试对具有不等分布因子水平的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个因子水平。
此外,如果有人知道更好的方法来解决这个问题,我愿意接受建议。