我没有找到关于这个精确任务的问题,所以我想问一下如何在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列的框架中。
答案 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()