基于R中的数据创建随机列

基于R中的数据创建随机列,r,merge,R,Merge,我需要创建一个模拟数据,但在合并R中的两列时遇到问题。我有两个向量,例如: product <- c("prod_A", "prod_B", "prod_C", "prod_D", "prod_E") chemical <- c("chemA", "chemB", "chemC") 我们可以使用样本为每个产品创建化学的随机样本。这假设正在提取的化学品和样本数量都是随机的: library(tidyverse) set.seed(123) tibble(produc

我需要创建一个模拟数据,但在合并R中的两列时遇到问题。我有两个
向量,例如:

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

我们可以使用
样本
为每个
产品
创建
化学
的随机样本
。这假设正在提取的
化学品和样本数量都是随机的:

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 
#一个tible:11 x 2
#组别:产品[5]
产品化学品
1产品化学
2产品化学
3产品化学
4产品化学
5产品化学
6产品化学
7产品化学
8生产化学
9产品化学
10产品化学
11产品化学

请注意,
group\u map
目前处于实验阶段,因此请谨慎使用。另一种方法是
split
map
rbind
结果,这基本上就是
group\u map
正在做的事情。

尝试
expand.grid(product,chemical)
或使用
tidyverse
交叉(product,chemical)%>%突变(product=replace(product,replicated(product),“”)
为什么productA只有chemA和chemB?规则是什么?语句“我有两个
数据。frame
”不正确。您有两个向量不是数据帧,请澄清您的输入是否应该是数据。frames@Sotos没有规则。这完全是随机的。@avid_用户同意。我重新开门。OP需要澄清他们所说的
random
是什么意思。每个元素有多少个元素?我们需要更多的信息来继续
# 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