基于R中另一个列的列的组合

时间:2016-11-09 14:15:07

标签: r dataframe combinations

我没有找到关于这个精确任务的问题,所以我想问一下如何在R中达到这个结果。 我在R。

中有这个数据框
or<-c("1","1","1","2","2")
pr<-c("a","b","c","w","x")
c<-data.frame(or,pr)

结果如下:

 c
       or pr
    1   1  a
    2   1  b
    3   1  c
    4   2  w
    5   2  x

我希望根据列pr得到列or的-not double,即not aa,bb,cc,xx,ww-组合。结果如下:

d
first second
a     b
b     a
c     b
b     c
c     a
a     c
w     x
x     w

前6行是pr发生与or=1的组合,第7行和第8行是or=2行的组合。

我找到了函数

expand.grid(c$pr)

但它不起作用,首先它不会将组合放在我需要的2列的框架中。

1 个答案:

答案 0 :(得分:4)

您可以使用CJ的{​​{1}}列data.table作为组变量:

or

更新

如果您更喜欢基础R解决方案,则可以将library(data.table) setDT(c)[, CJ(pr, pr), or][V1 != V2, .(first = V1, second = V2)] # first second #1: a b #2: a c #3: b a #4: b c #5: c a #6: c b #7: w x #8: x w tapply()一起使用:

expand.grid()