R中每个因子级别的一行的穷举组合

时间:2018-09-19 10:09:13

标签: r dataframe

假设我有这样的数据

> df <- data.frame(group = c('A','B','B','C','C'),value=c(1,1,2,1,2))
> df
  group value
1     A     1
2     B     1
3     B     2
4     C     1
5     C     2

我想从每个组中获得一个值的所有组合。在这种情况下,有四个:

 > df[c(1,2,4),]
      group value
    1     A     1
    2     B     1
    4     C     1
    > df[c(1,2,5),]
      group value
    1     A     1
    2     B     1
    5     C     2
    > df[c(1,3,4),]
      group value
    1     A     1
    3     B     2
    4     C     1
    > df[c(1,3,5),]
      group value
    1     A     1
    3     B     2
    5     C     2

1 个答案:

答案 0 :(得分:1)

我想这会有所帮助:

> do.call(expand.grid,
+         lapply(levels(df$group), function (level) which(df$group == level)))
  Var1 Var2 Var3
1    1    2    4
2    1    3    4
3    1    2    5
4    1    3    5