【问题标题】:add five items on list to each value in column of dataframe将列表中的五个项目添加到数据框列中的每个值
【发布时间】:2021-10-31 07:05:29
【问题描述】:

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

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")

【问题讨论】:

  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: r tidyr tibble


【解决方案1】:

在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

【讨论】:

    【解决方案2】:

    我们可以试试

    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
    

    【讨论】:

      【解决方案3】:

      我们可能需要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  
      

      【讨论】:

        猜你喜欢
        • 2021-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多