将列表中的五个项目添加到数据框列中的每个值

add five items on list to each value in column of dataframe

不太确定如何表达标题,但我在数据框中有一个名称列表,我想将列表中的五个项目添加到每个名称,这样每个名称和一个项目就是一行。所以,

Name 1, Item1

Name 1, Item2

Name 1, Item3

Name 1, Item4 

示例数据:

testdata<-as_tibble(c("Steve","Paul","Mary"))
product<-c("Item1","Item2","Item3","Item4","Item5")

我们可能需要crossing

library(tidyr)
crossing(testdata, product)

-输出

# A tibble: 15 x 2
   value product
   <chr> <chr>  
 1 Mary  Item1  
 2 Mary  Item2  
 3 Mary  Item3  
 4 Mary  Item4  
 5 Mary  Item5  
 6 Paul  Item1  
 7 Paul  Item2  
 8 Paul  Item3  
 9 Paul  Item4  
10 Paul  Item5  
11 Steve Item1  
12 Steve Item2  
13 Steve Item3  
14 Steve Item4  
15 Steve Item5  

我们可以试试

with(
  testdata,
  rev(expand.grid(Item = product, Name = value))
)

这给出了

    Name  Item
1  Steve Item1
2  Steve Item2
3  Steve Item3
4  Steve Item4
5  Steve Item5
6   Paul Item1
7   Paul Item2
8   Paul Item3
9   Paul Item4
10  Paul Item5
11  Mary Item1
12  Mary Item2
13  Mary Item3
14  Mary Item4
15  Mary Item5

在 base R 中,我们可以使用 merge 来执行这种交叉连接。

merge(testdata, product)

#   value     y
#1  Steve Item1
#2   Paul Item1
#3   Mary Item1
#4  Steve Item2
#5   Paul Item2
#6   Mary Item2
#7  Steve Item3
#8   Paul Item3
#9   Mary Item3
#10 Steve Item4
#11  Paul Item4
#12  Mary Item4
#13 Steve Item5
#14  Paul Item5
#15  Mary Item5