gpt4 book ai didi

r - 创建按组拆分的列车测试

转载 作者:行者123 更新时间:2023-12-04 11:56:01 25 4
gpt4 key购买 nike

我有一个数据框,我想按组 ID 将其拆分为训练集和测试集。以下代码对随机行进行采样并将它们放入训练和测试 df 中:

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

和所需的输出:

火车:
  ID Var
1 17
1 26
1 100
3 36
3 18
3 5

测试:
  ID Var
2 9
2 41
2 49

最佳答案

这是使用 dplyr 执行此操作的一种方法:

library(tidyverse)

# Create more data to better demonstrate grouping effect
my_dat <-
data.frame(ID = as.factor(rep(1:3, each = 9)), Var = sample(1:100, 27))

# Randomly assign train/test groups to all values of ID
groups <-
my_dat %>%
select(ID) %>%
distinct(ID) %>%
rowwise() %>%
mutate(group = sample(
c("train", "test"),
1,
replace = TRUE,
prob = c(0.5, 0.5) # Set weights for each group here
))

groups

# Join group assignments to my_dat
my_dat <- my_dat %>%
left_join(groups)

my_dat

这种方法使您的原始数据保持不变,但为每一行添加了一个定义组(训练与测试)的新列。如果你想得到一个只有训练数据的数据框,你可以像这样过滤它:
filter(my_dat, group == "train")

关于r - 创建按组拆分的列车测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43322960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com