如何随机拆分R中的数据框?

时间:2016-04-16 10:45:59

标签: r dataframe

我有一个带有大约的数据框。 1000行,我想将它随机分成8个较小的数据帧,每个数据帧包含100个元素。我试图在数据框上使用sample函数8次,但有时它会选择相同的行。

1 个答案:

答案 0 :(得分:4)

我们通过sample创建一个分组变量1到8,其中size作为数据集的行数,split具有分组变量的行序列list 1}},循环遍历listlapply(...),对数据集进行子集化,并使用head获取前100行

lst <- lapply(split(1:nrow(df1), sample(1:8, nrow(df1), replace=TRUE, prob = rep(1/8, 8))),
           function(i) head(df1[i,],100))
sapply(lst, nrow)
#  1   2   3   4   5   6   7   8 
#100 100 100 100 100 100 100 100 

正如@RHertel在评论中提到的,我们可以做一秒sample来获得100行

lst <- lapply(split(1:nrow(df1), sample(1:8, nrow(df1), replace=TRUE, prob = rep(1/8, 8))),
       function(i) df1[sample(i, 100, replace=FALSE),])

数据

set.seed(24)
df1 <- data.frame(V1= 1:1000, V2= rnorm(1000))