У меня есть фрейм данных с именем df , который выглядит следующим образом:
> df
Date A B C
1 2001 1 12 14
2 2002 2 13 15
3 2003 3 14 16
4 2004 4 15 17
5 2005 5 16 18
6 2006 6 17 19
7 2007 7 18 20
8 2008 8 19 21
9 2009 9 20 22
10 2010 10 21 23
и матрица с именем index , которая выглядит следующим образом:
> index
Resample01 Resample02 Resample03 Resample04 Resample05
[1,] 1 7 1 2 7
[2,] 3 9 2 3 8
[3,] 5 1 3 8 1
[4,] 8 3 4 9 4
[5,] 10 4 5 10 9
Числа в каждом столбце обозначают номер строки, которую нужно выбрать.
Цель состоит в том, чтобы разбить информационный кадр на две исключительные группы «train» и «test» в соответствии с номерами строк в каждом столбце матрицы «index». Например, для «Resample01» результат должен выглядеть следующим образом:
> train
Date A B C
1 2001 1 12 14
3 2003 3 14 16
5 2005 5 16 18
8 2008 8 19 21
10 2010 10 21 23
и
> test
Date A B C
2 2002 2 13 15
4 2004 4 15 17
6 2006 6 17 19
7 2007 7 18 20
9 2009 9 20 22
и этот процесс должен быть выполнен для каждого столбца в «index», а результаты должны быть сохранены в двух списках «train» и «test» , в которых «train» имеет вид:
$train1
Date A B C
1 2001 1 12 14
3 2003 3 14 16
5 2005 5 16 18
8 2008 8 19 21
10 2010 10 21 23
$train2
:
:
$train5
и «test» должны быть в одном формате.
Только для того, чтобы заметить, что мой df содержит 43 000 наблюдений, а матрица index содержит 2000 столбцов и более 20 000 строк. Я знаю, что поднабор для одного столбца прост, выполнив:
test = df[-c(index[,1]),]
но для нескольких столбцов я не знаю, как это сделать (или зациклить), и форма сохранения списка также кажется сложной.