R:将行分成成对的组合

时间:2019-03-21 11:37:31

标签: r matrix

假设我有以下几行,我想将它们分成几对:

  fname_c1 fname_c2 lname_c1 lname_c2    by    bm    bd group
  <fct>    <fct>    <fct>    <fct>    <int> <int> <int> <dbl>
1 STEFAN   NA       WOLFF    NA        1957     9     2     4
2 STEFAN   NA       MUELLER  NA        1957     6     7     4
3 STEFAN   NA       MUELLER  NA        1957     6     1     4

我想要:

  fname_c1 fname_c2 lname_c1 lname_c2    by    bm    bd group
  <fct>    <fct>    <fct>    <fct>    <int> <int> <int> <dbl>
1 STEFAN   NA       WOLFF    NA        1957     9     2     4
2 STEFAN   NA       MUELLER  NA        1957     6     7     4

  fname_c1 fname_c2 lname_c1 lname_c2    by    bm    bd group
  <fct>    <fct>    <fct>    <fct>    <int> <int> <int> <dbl>
1 STEFAN   NA       WOLFF    NA        1957     9     2     4
3 STEFAN   NA       MUELLER  NA        1957     6     1     4

  fname_c1 fname_c2 lname_c1 lname_c2    by    bm    bd group
  <fct>    <fct>    <fct>    <fct>    <int> <int> <int> <dbl>
2 STEFAN   NA       MUELLER  NA        1957     6     7     4
3 STEFAN   NA       MUELLER  NA        1957     6     1     4

如果我有4行,我将执行combn(4, 2)并得到组合矩阵。

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    1    1    2    2    3
[2,]    2    3    4    3    4    4

但是现在我如何使行采用矩阵元素的索引:/对不起,我有点像矩阵。

1 个答案:

答案 0 :(得分:2)

Grid可以采用一系列行索引,在combn中,我们可以根据索引对数据集的行进行子集化

FUN

数据

combn(seq_len(nrow(df1)), 2, FUN = function(i) df1[i,], simplify = FALSE)