r - R随机数据拆分基于2列
问题描述
我有这样的数据(列 ObjectID 和 Cost),我通常使用以下方法拆分数据:
sample.split(data$Cost, SplitRatio=0.7)
但在这种情况下,我希望将“成本”保持为相对比率,但我也想使用 ObjectID - 所以每个 ObjectID 只能在测试或训练组中。如何随机拆分这个?
ObjectID Cost Type
12345 1624 Test
12345 1175 Test
12345 1049 Test
12345 1733 Test
11111 1945 Train
11111 1989 Train
22222 1448 Test
22222 1815 Test
22222 1244 Test
33333 1355 Train
33333 1134 Train
44444 1478 Train
44444 1082 Train
44444 1147 Train
44444 1290 Train
55555 1383 Train
55555 1378 Train
55555 1288 Train
解决方案
sample
超过唯一ObjectID
而不是所有行。
uniq_sample <- unique(df$ObjectID)
train_sample <- sample(uniq_sample, length(uniq_sample) * 0.7)
test_sample <- setdiff(uniq_sample, train_sample)
train <- subset(df, ObjectID %in% train_sample)
test <- subset(df, ObjectID %in% test_sample)
推荐阅读
- c++ - 有没有办法用 AVX2 编写 _mm256_shldi_epi8(a,b,1) ?(向量之间每 8 位元素移位一位)
- file - 获取具有不同列数的两个文件中的公共行
- ios - Swift 时间戳只有 10 个字符?
- prolog - 根据复杂条件过滤列表列表
- javascript - 无法保存输入复选框的选中状态
- linux - cgo 从 amd64(linux) 交叉编译到 arm64(linux)
- excel - 如何创建 Excel 形状(折线)?
- azure - 机器人不再工作
- google-cloud-datastore - 有没有办法获取在一段时间内在 Google Datastore 上执行的查询列表……比如过去两天?
- apache-spark - 无法在 Spark 中使用自定义一元转换器读取管道模型