Создать случайный столбец на основе данных в R - PullRequest
0 голосов
/ 09 июля 2019

Мне нужно создать данные моделирования, и у меня возникла проблема с объединением двух столбцов в R. У меня есть два vectors, например:

    product <- c("prod_A", "prod_B", "prod_C", "prod_D", "prod_E")
    chemical <- c("chemA", "chemB", "chemC")

Мне нужно создать два столбца на основе продукта ихимическое вещество внутри него.

Например, конечный результат должен выглядеть примерно так:

    Product   Chemical

    Prod_A    chemA
              chemB

    Prod_B    chemB
              chemC

    Prod_C    chemA
              chemC

    Prod_D    chemA

    Prod_E    chemA
              chemB
              chemC

1 Ответ

1 голос
/ 09 июля 2019

Мы можем использовать sample для создания случайной выборки chemical с для каждого product с использованием group_map. Это предполагает, что как chemical s рисуется, так и количество выборок являются случайными:

library(tidyverse)
set.seed(123)

tibble(product) %>%
  group_by(product) %>%
  group_map(~ tibble(Chemical = sample(chemical, sample(seq_along(chemical)))))

Выход:

# A tibble: 11 x 2
# Groups:   product [5]
   product Chemical
   <chr>   <chr>   
 1 prod_A  chemC   
 2 prod_B  chemC   
 3 prod_B  chemB   
 4 prod_B  chemA   
 5 prod_C  chemB   
 6 prod_C  chemA   
 7 prod_C  chemC   
 8 prod_D  chemC   
 9 prod_E  chemC   
10 prod_E  chemB   
11 prod_E  chemA 

Обратите внимание, что group_map в настоящее время является экспериментальным, поэтому, пожалуйста, используйте его с осторожностью. Альтернативой могут быть split, map и rbind результаты, что, по сути, и делает group_map.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...