我需要创建一个模拟数据,并且在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
答案 0 :(得分:1)
我们可以使用sample
使用chemical
为每个product
创建group_map
s个随机样本。假设绘制的chemical
和样本数都是随机的:
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
正在做的事情。