如何在R中将数据分为三个部分?

时间:2014-06-19 21:08:53

标签: r

我想将数据分成3个部分,比例为6:2:2。是否有R命令可以做到这一点?感谢。

我在插入符包中使用了createDataPartition,它可以将数据拆分为两部分。但如何用3分裂做到这一点?那可能吗?或者我需要两个步骤来做到这一点?

1 个答案:

答案 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