首页 > 解决方案 > 如何将元素与嵌套向量列匹配?

问题描述

我正在尝试查看嵌套向量中的元素如何与 Order_ID 列中的订单 ID 匹配,但我不太确定如何将它们匹配在一起。例如:

在此处输入图像描述

我想创建代码以将订单 ID 与嵌套向量中的单独元素匹配。例如,我希望看到

在此处输入图像描述

我尝试使用unlist()从嵌套向量中提取元素,但我仍然不确定如何将它们与订单 ID 匹配。有没有办法解决这个问题?任何想法表示赞赏。

标签: rnested-tibble

解决方案


在这里,您有一个可重现的问题示例:

library(dplyr)

df <- tibble(x = letters[1:3],
             a = list(1L, 2:3, 4:6),
             b = list(LETTERS[1], LETTERS[2:3], LETTERS[4:6]))

df
#> # A tibble: 3 x 3
#>   x     a         b        
#>   <chr> <list>    <list>   
#> 1 a     <int [1]> <chr [1]>
#> 2 b     <int [2]> <chr [2]>
#> 3 c     <int [3]> <chr [3]>

View(df)

在此处输入图像描述

在这里你可以如何解决它:

df %>% 
 group_by(x) %>% 
 summarise(across(c(a,b), unlist), .groups = "drop")
#> # A tibble: 6 x 3
#>   x         a b    
#>   <chr> <int> <chr>
#> 1 a         1 A    
#> 2 b         2 B    
#> 3 b         3 C    
#> 4 c         4 D    
#> 5 c         5 E    
#> 6 c         6 F

您需要设置group_by要保留和复制的所有变量(在本例中x)以及要取消列出的所有变量(在本例中c(a, b))。

across通过考虑组,将适用unlist于每一列。

我相信在你的情况下,代码应该是:

df %>% 
 group_by(Order_ID) %>% 
 summarise(across(c(Product, Price, Quantity), unlist), .groups = "drop")

推荐阅读