【问题标题】:R Radom data split based on 2 columnsR随机数据拆分基于2列
【发布时间】:2020-10-30 14:34:04
【问题描述】:

我有这样的数据(列 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

【问题讨论】:

    标签: r random split


    【解决方案1】:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      • 2017-03-10
      相关资源
      最近更新 更多