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