Как выбрать случайные выборки в R (с примерами)


Чтобы выбрать случайную выборку в R, мы можем использовать функцию sample() , которая использует следующий синтаксис:

образец (x, размер, заменить = FALSE, prob = NULL)

куда:

  • x: вектор элементов, из которых можно выбирать.
  • размер: Размер выборки.
  • replace: следует ли пробовать с заменой или нет. По умолчанию ЛОЖЬ.
  • prob: Вектор вероятностных весов для получения элементов из вектора. Значение по умолчанию — NULL.

В этом руководстве объясняется, как использовать эту функцию для выбора случайной выборки в R как из вектора, так и из фрейма данных.

Пример 1: Случайная выборка из вектора

Следующий код показывает, как выбрать случайную выборку из вектора без замены :

#create vector of data
data <- c(1, 3, 5, 6, 7, 8, 10, 11, 12, 14)

#select random sample of 5 elements without replacement
sample(x=data, size=5)

[1] 10 12 5 14 7

Следующий код показывает, как выбрать случайную выборку из вектора с заменой :

#create vector of data
data <- c(1, 3, 5, 6, 7, 8, 10, 11, 12, 14)

#select random sample of 5 elements with replacement
sample(x=data, size=5, replace= TRUE )

[1] 12 1 1 6 14

Пример 2: Случайная выборка из фрейма данных

В следующем коде показано, как выбрать случайную выборку из фрейма данных:

#create data frame
df <- data.frame(x=c(3, 5, 6, 6, 8, 12, 14),
 y=c(12, 6, 4, 23, 25, 8, 9),
 z=c(2, 7, 8, 8, 15, 17, 29))

#view data frame 
df

 x y z
1 3 12 2
2 5 6 7
3 6 4 8
4 6 23 8
5 8 25 15
6 12 8 17
7 14 9 29

#select random sample of three rows from data frame
rand_df <- df[ sample ( nrow(df), size= 3 ), ]

#display randomly selected rows
rand_df

 x y z
4 6 23 8
7 14 9 29
1 3 12 2

Вот что происходит в этом фрагменте кода:

1. Чтобы выбрать подмножество фрейма данных в R, мы используем следующий синтаксис: df[строки, столбцы]

2. В приведенном выше коде мы случайным образом выбираем выборку из 3 строк из фрейма данных и всех столбцов.

3. Конечным результатом является подмножество фрейма данных с 3 случайно выбранными строками.

Важно отметить, что каждый раз, когда мы используем функцию sample() , R будет выбирать другой образец, поскольку функция выбирает значения случайным образом.

Чтобы воспроизвести результаты какого-либо анализа, обязательно используйте set.seed(some number) , чтобы функция sample() каждый раз выбирала одну и ту же случайную выборку. Например:

#make this example reproducible
set.seed(23)

#create data frame
df <- data.frame(x=c(3, 5, 6, 6, 8, 12, 14),
 y=c(12, 6, 4, 23, 25, 8, 9),
 z=c(2, 7, 8, 8, 15, 17, 29))

#select random sample of three rows from data frame
rand_df <- df[ sample ( nrow(df), size= 3 ), ]

#display randomly selected rows
rand_df

 x y z
5 8 25 15
2 5 6 7
6 12 8 17

Каждый раз, когда вы запускаете приведенный выше код, каждый раз будут выбираться одни и те же 3 строки фрейма данных.

Дополнительные ресурсы

Стратифицированная выборка в R (с примерами)
Систематическая выборка в R (с примерами)
Кластерная выборка в R (с примерами)