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

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

我以为我有一个解决方案: Find all unique combinations of removing a duplicate in groups from a data set

然而,如果副本跨2个组(如上面的示例中所示),则此解决方案不起作用.它只会从打印机中删除其中一个重复内容,然后组合例如也会在B组或C组中保留重复内容1.

推荐答案

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年4月22日,共有reprex v2.0.2

R相关问答推荐

在R中使用GG Plot时如何 suppress 等值线图中的彩色条

多个ggpredicate对象的平均值

从多个前置日期中获取最长日期

如果行和大于值,则过滤

当两个图层映射到相同的美学时,隐藏一个图层的图例值

ggplot2中的X轴显示数值,单位为百,而不是十

Ggplot2中的重复注记

R spatstat Minkowski Sum()返回多个边界

绘制采样开始和采样结束之间的事件

在保留列表元素属性的同时替换列表元素

条形图顶部与其错误条形图不对齐

R -使用矩阵reshape 列表

使用shiny 中的所选要素行下拉菜单

解析嵌套程度极高的地理数据

R中时间间隔的大向量与参考时间间隔的相交

数据集上的R循环和存储模型系数

使用geom_sf跨越日期线时的闭合边界

变异以按组从其他列创建具有最大和最小值的新列

抽样变换-REXP与RWEIBUR

R:使用ApexCharge更改标签在饼图中的位置