我想将数据分成3个部分,比例为6:2:2。是否有R命令可以做到这一点?感谢。
我在插入符包中使用了createDataPartition,它可以将数据拆分为两部分。但如何用3分裂做到这一点?那可能吗?或者我需要两个步骤来做到这一点?
答案 0 :(得分:1)
您使用sample
随机分割(大致)此比率:
set.seed(144)
spl <- split(iris, sample(c(1, 1, 1, 2, 3), nrow(iris), replace=T))
这会将您的初始数据框拆分为一个列表。现在,您可以使用lapply
并在列表的每个元素上调用nrow
来检查您是否已获得所需的拆分比率:
unlist(lapply(spl, nrow))
# 1 2 3
# 98 26 26
如果你想随机洗牌但要获得每个组的确切比例,你可以随机抽取索引,然后从混洗列表中选择每种索引类型的正确数量。对于虹膜,我们希望组1为90,组2为30,组3为30:
set.seed(144)
nums <- c(90, 30, 30)
assignments <- rep(NA, nrow(iris))
assignments[sample(nrow(iris))] <- rep(c(1, 2, 3), nums)
spl2 <- split(iris, assignments)
unlist(lapply(spl2, nrow))
# 1 2 3
# 90 30 30