首页 > 解决方案 > r 创建与另一列分组的行元素匹配的新数据框

问题描述

我想从df下面的数据框中创建一个新的数据框。在新的数据df2框(df$namedf$namedf$group

df <- data.frame(group = rep(letters[1:2], each=3),
                 name = LETTERS[1:6])

> df
  group name
1     a    A
2     a    B
3     a    C
4     b    D
5     b    E
6     b    F

在此示例中,“A”、“B”和“C”df$name属于“a”中df$group,我想将它们放在新数据框中的同一行中。所需的输出如下所示:

  > df2
          V1   V2
    1     A    B
    2     A    C
    3     B    A
    4     B    C
    5     C    A
    6     C    B
    7     D    E
    8     D    F
    9     E    D
    10    E    F
    11    F    D
    12    F    E

标签: rdataframe

解决方案


我们可以这样base Rmerge

out <- setNames(subset(merge(df, df, by.x = 'group', by.y = 'group'),
         name.x != name.y, select = -group), c("V1", "V2"))
row.names(out) <- NULL

out
#   V1 V2
#1   A  B
#2   A  C
#3   B  A
#4   B  C
#5   C  A
#6   C  B
#7   D  E
#8   D  F
#9   E  D
#10  E  F
#11  F  D
#12  F  E

推荐阅读