Допустим, у меня есть список данных с разными номерами строк:
AB_df = data.frame(replicate(2,sample(0:130,201,rep=TRUE)))
BC_df = data.frame(replicate(2,sample(0:130,200,rep=TRUE)))
DE_df = data.frame(replicate(2,sample(0:130,197,rep=TRUE)))
FG_df = data.frame(replicate(2,sample(0:130,203,rep=TRUE)))
AB_pc = data.frame(replicate(2,sample(0:130,201,rep=TRUE)))
BC_pc = data.frame(replicate(2,sample(0:130,200,rep=TRUE)))
DE_pc = data.frame(replicate(2,sample(0:130,197,rep=TRUE)))
FG_pc = data.frame(replicate(2,sample(0:130,203,rep=TRUE)))
df_list = list(AB_df, BC_df, DE_df, FG_df, AB_pc, BC_pc, DE_pc, FG_pc)
names(df_list) = c("AB_df", "BC_df", "DE_df", "FG_df", "AB_pc", "BC_pc", "DE_pc", "FG_pc")
Я хочу разбить вложенные кадры данных на n равных, но случайных частей, чтобы у меня было, например, для 4 частей 4 кадра данных с50 строк и 1 с 51 строкой. Ни одна строка не должна быть дважды ни в одном из разделенных фреймов данных.
Структура должна быть:
List of 8
$ AB_df: list of 4
$ AB_df1: "data.frame": 50 obs. of 2 variables
..$ X1: int [1:50] 88 128....
..$ X2: int [1:50] 12 84 ....
$ AB_df2: "data.frame": 50 obs. of 2 variables
..$ X1: int [1:50] numbers...
..$ X2: int [1:50] numbers....
$ AB_df3: "data.frame": 50 obs. of 2 variables
..$ X1: int [1:50] numbers...
..$ X2: int [1:50] numbers....
$ AB_df4: "data.frame": 51 obs. of 2 variables
..$ X1: int [1:50] numbers...
..$ X2: int [1:50] numbers....
$ BC_df:'list of 4
$ BC_df1: "data.frame": 50 obs. of 2 variables
..$ X1: int [1:50] numbers...
..$ X2: int [1:50] numbers....
$ BC_df2: "data.frame": 50 obs. of 2 variables
..$ X1: int [1:50] numbers...
..$ X2: int [1:50] numbers....
............................
Я нашел несколько тем о том, как случайным образом разделить фрейм данных, но ни одна из этих тем не помогламеня с моей проблемой.
ОБНОВЛЕНИЕ: по какой-то причине это дает мне только 3 разделенных кадра данных.
set.seed(0L)
AB_df = data.frame(replicate(2,sample(0:130,1624,rep=TRUE)))
BC_df = data.frame(replicate(2,sample(0:130,1656,rep=TRUE)))
DE_df = data.frame(replicate(2,sample(0:130,1656,rep=TRUE)))
FG_df = data.frame(replicate(2,sample(0:130,1729,rep=TRUE)))
AB_pc = data.frame(replicate(2,sample(0:130,1624,rep=TRUE)))
BC_pc = data.frame(replicate(2,sample(0:130,1656,rep=TRUE)))
DE_pc = data.frame(replicate(2,sample(0:130,1656,rep=TRUE)))
FG_pc = data.frame(replicate(2,sample(0:130,1729,rep=TRUE)))
df_list = list(AB_df, BC_df, DE_df, FG_df, AB_pc, BC_pc, DE_pc, FG_pc)
names(df_list) = c("AB_df", "BC_df", "DE_df", "FG_df", "AB_pc", "BC_pc", "DE_pc", "FG_pc")
new = lapply(df_list, function(df) {
n <- nrow(df)
split(df, cut(sample(n), seq(1, n, by=floor(n/4)), labels=FALSE, include.lowest=TRUE))})