创建重复删除的唯一数据集组合列表

问题描述 投票:0回答:1

我有一个跨组重复的数据集。 例如:

dat <- data.frame(
  group = c("A", "A", "A", "B", "B", "C","C","C"),
  values = c("duplicate1","duplicate2",3,"duplicate1",
             5,"duplicate1","duplicate2",6)
)

我的预期输出是一个包含 N 个数据集的列表,其中包含每个组如何保留重复项的独特组合:

dfs <- list(df1, df2, df3, df4, df5, df6)
dfs[[1]] ## Combination 1

  group      values
1    A duplicate1
2    A duplicate2
3    A          3
4    B          5
5    C          6

dfs[[2]] ## Combination 2

  group      values
1    A duplicate2
2    A          3
3    B          5
4    B duplicate1
5    C          6

dfs[[3]] ## Combination 3

  group      values
1    A duplicate2
2    A          3
3    B          5
4    C          6
5    C duplicate1

dfs[[4]] ## Combination 4

  group      values
1    A duplicate1
2    A          3
3    B          5
4    C          6
5    C duplicate2

dfs[[5]] ## Combination 5

  group      values
1    A          3
2    B          5
3    B duplicate1
4    C          6
5    C duplicate2

dfs[[6]] ## Combination 6

  group      values
1    A          3
2    B          5
3    C          6
4    C duplicate1
5    C duplicate2

我想我有一个解决方案: 查找从数据集中删除组中重复项的所有唯一组合

但是,如果重复项跨 > 2 个组,则此解决方案不起作用,如上例所示。它只会从数据帧中删除一个重复项,然后组合也会将重复项 1 保留在 B 组或 C 组中。

r loops tidyverse
1个回答
0
投票
library(dplyr)

dat %>% 
  summarise(group = list(group), .by = values) %>% 
  {apply(expand.grid(.$group), 1, \(x) 
         data.frame(group = x, values = .$values, row.names = NULL) %>% 
           arrange(group))}
#> [[1]]
#>   group     values
#> 1     A duplicate1
#> 2     A duplicate2
#> 3     A          3
#> 4     B          5
#> 5     C          6
#> 
#> [[2]]
#>   group     values
#> 1     A duplicate2
#> 2     A          3
#> 3     B duplicate1
#> 4     B          5
#> 5     C          6
#> 
#> [[3]]
#>   group     values
#> 1     A duplicate2
#> 2     A          3
#> 3     B          5
#> 4     C duplicate1
#> 5     C          6
#> 
#> [[4]]
#>   group     values
#> 1     A duplicate1
#> 2     A          3
#> 3     B          5
#> 4     C duplicate2
#> 5     C          6
#> 
#> [[5]]
#>   group     values
#> 1     A          3
#> 2     B duplicate1
#> 3     B          5
#> 4     C duplicate2
#> 5     C          6
#> 
#> [[6]]
#>   group     values
#> 1     A          3
#> 2     B          5
#> 3     C duplicate1
#> 4     C duplicate2
#> 5     C          6

创建于 2024-04-22,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.