将数据集分成60%、20%、20%
Divide data set into 60%, 20%, 20%
我正在尝试将 2 组数据移动到 3 组数据,如上述问题中所述。以下是我使用的脚本:
set.seed(125)
d <- sample(x = nrow(db), size = nrow(db) * 0.60, )
train60 <-db[d, ]
valid40 <-db[-d, ]
有没有办法修改上面的脚本?我试图创建另一行:
valid40 <- db[-d] * 0.2
没有用。
当前数据集有几个因子变量。
我曾尝试在 cut
函数上使用 Frank's solution here,但不知何故我设法获得
Error in cut.default(seq(nrow(df)), nrow(df) * cumsum(c(0, spec)),
labels = names(spec)) : lengths of 'breaks' and 'labels' differ
即使在网上搜索帮助后我也不明白。
如果我没理解错的话,那么您想要 60%、20% 和 20% 的样本分叉而不重复。我以 iris 数据为例,它包含 150 行和 5 列。
samp <- sample(1:nrow(iris),.6*nrow(iris)) ##60 and 40 bifurcation
train60 <- iris[samp,] ## This is the 60% chunk
remain40 <- iris[-samp,] ## This is used for further bifurcation
samp2 <- sample(1:nrow(remain40),.5*nrow(remain40))
first20 <- remain40[samp2,] ## First chunk of 20%
secnd20 <- remain40[-samp2,] ## Second Chunk of 20%
Reduce("intersect",list(train60,first20,secnd20)) ##Check to find if there is any intersect , 0 rows means everything is fine and sample are not repetitive.
db <- data.frame(x=1:10, y=11:20)
set.seed(125)
d <- sample(x=nrow(db),size=nrow(db)*0.60,)
train60 <-db[d,]
valid40 <-db[-d,]
现在在每个新数据帧中取一半的 valid40:
e <- sample(x=nrow(valid40),size=nrow(valid40)*0.50,)
train20 <-valid40[e,]
valid20 <- valid40[-e,]
我正在尝试将 2 组数据移动到 3 组数据,如上述问题中所述。以下是我使用的脚本:
set.seed(125)
d <- sample(x = nrow(db), size = nrow(db) * 0.60, )
train60 <-db[d, ]
valid40 <-db[-d, ]
有没有办法修改上面的脚本?我试图创建另一行:
valid40 <- db[-d] * 0.2
没有用。
当前数据集有几个因子变量。
我曾尝试在 cut
函数上使用 Frank's solution here,但不知何故我设法获得
Error in cut.default(seq(nrow(df)), nrow(df) * cumsum(c(0, spec)), labels = names(spec)) : lengths of 'breaks' and 'labels' differ
即使在网上搜索帮助后我也不明白。
如果我没理解错的话,那么您想要 60%、20% 和 20% 的样本分叉而不重复。我以 iris 数据为例,它包含 150 行和 5 列。
samp <- sample(1:nrow(iris),.6*nrow(iris)) ##60 and 40 bifurcation
train60 <- iris[samp,] ## This is the 60% chunk
remain40 <- iris[-samp,] ## This is used for further bifurcation
samp2 <- sample(1:nrow(remain40),.5*nrow(remain40))
first20 <- remain40[samp2,] ## First chunk of 20%
secnd20 <- remain40[-samp2,] ## Second Chunk of 20%
Reduce("intersect",list(train60,first20,secnd20)) ##Check to find if there is any intersect , 0 rows means everything is fine and sample are not repetitive.
db <- data.frame(x=1:10, y=11:20)
set.seed(125)
d <- sample(x=nrow(db),size=nrow(db)*0.60,)
train60 <-db[d,]
valid40 <-db[-d,]
现在在每个新数据帧中取一半的 valid40:
e <- sample(x=nrow(valid40),size=nrow(valid40)*0.50,)
train20 <-valid40[e,]
valid20 <- valid40[-e,]