我有一个数据框,我想按组ID将其分割成训练集和测试集。以下代码会随机选取行并将它们放入训练和测试数据框中:
samp <- sample(nrow(df), 0.7 * nrow(df))
train <- df[samp, ]
test <- df[-samp, ]
然而,我想把我的ID分组在一起。
示例输入数据框 df:
my_dat <- data.frame(ID=as.factor(rep(1:3, each = 3)), Var=sample(1:100, 9))
ID Var
1 17
1 26
1 100
2 9
2 41
2 49
3 36
3 18
3 5
And desired output to:
Train:
ID Var
1 17
1 26
1 100
3 36
3 18
3 5
测试:
ID Var
2 9
2 41
2 49
myIds <- unique(df$id); myTrainers <- sample(myIds, 2)
。然后myTesters <- myIds[!(myIds %in% myTrainers)]
。 - lmomyTrainers
和myTesters
的输出分别为:[1] 2 3 Levels: 1 2 3
和[1] 1 Levels: 1 2 3
。 - apples-orangesas.integer
,但您可能需要更仔细地查看该变量以及它为什么被读入为因子变量。 - lmo