Как разделить кадры данных со случайной подгруппой из одного кадра данных в r? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть фрейм данных в r с 1000 строками, я хочу разделить его на 10 фреймов данных, каждый из которых содержит 100 строк с выборкой, заменив ее на False, чтобы я получил все 1000 строк, как это сделать в цикле и сохранить все 10 фреймы данных в виде списка или любой эффективный способ использовать один за другим на основе индекса?

data <- read.csv("data.csv")
nrow(data)
1000

Я делю как

split1 <- sample_n(100, replace = FALSE)

аналогично мне нужно 10 разделений со всеми 1000 строками, sample_n дает мне случайные 100 строк, я хочу убедиться, что второе разделение не займет ни одну из строк в split1, тогда я думаю, что могу сохранить в виде списка или любого другого эффективный способ использования на основе индекса

l = list(split1, split2,....)

Нет необходимости хранить на диске, только промежуточные данные R, если это происходит в цикле, для упрощения кода будет лучше

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Мы можем создать переменную группировки с %/%

n <- 100
grp <- (seq_len(nrow(data))-1) %/%n  + 1
split(data[sample(nrow(data)),], grp)

с использованием mtcars в качестве примера

f1 <- function(data, n) {
   grp <- (seq_len(nrow(data))-1) %/%n + 1
   split(data[sample(nrow(data)),], grp)
 }

f1(mtcars, 8)
1 голос
/ 23 мая 2019

Вы можете использовать sample для перемешивания строк и split, а затем создать группу для разделения, используя gl

split(data[sample(seq_len(nrow(data))), ], gl(nrow(data)/100, 100))

. Это даст вам список из 10 кадров данных, каждый из которых будет иметь 100 строк.без повторяющихся строк.


Использование этого на mtcars для создания 4 групп по 8 строк в каждой

split(mtcars[sample(seq_len(nrow(mtcars))), ], gl(nrow(mtcars)/8, 8))

#$`1`
#                  mpg cyl disp  hp drat   wt qsec vs am gear carb
#AMC Javelin      15.2   8  304 150 3.15 3.44 17.3  0  0    3    2
#Merc 450SLC      15.2   8  276 180 3.07 3.78 18.0  0  0    3    3
#Pontiac Firebird 19.2   8  400 175 3.08 3.85 17.1  0  0    3    2
#Mazda RX4 Wag    21.0   6  160 110 3.90 2.88 17.0  0  1    4    4
#Toyota Corona    21.5   4  120  97 3.70 2.46 20.0  1  0    3    1
#Merc 280         19.2   6  168 123 3.92 3.44 18.3  1  0    4    4
#Dodge Challenger 15.5   8  318 150 2.76 3.52 16.9  0  0    3    2
#Maserati Bora    15.0   8  301 335 3.54 3.57 14.6  0  1    5    8

#$`2`
#                    mpg cyl  disp  hp drat   wt qsec vs am gear carb
#Duster 360         14.3   8 360.0 245 3.21 3.57 15.8  0  0    3    4
#Honda Civic        30.4   4  75.7  52 4.93 1.61 18.5  1  1    4    2
#Datsun 710         22.8   4 108.0  93 3.85 2.32 18.6  1  1    4    1
#Fiat 128           32.4   4  78.7  66 4.08 2.20 19.5  1  1    4    1
#Valiant            18.1   6 225.0 105 2.76 3.46 20.2  1  0    3    1
#Cadillac Fleetwood 10.4   8 472.0 205 2.93 5.25 18.0  0  0    3    4
#Lotus Europa       30.4   4  95.1 113 3.77 1.51 16.9  1  1    5    2
#Ford Pantera L     15.8   8 351.0 264 4.22 3.17 14.5  0  1    5    4
#.....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...