选择R中固定列的组合

时间:2015-12-16 15:29:02

标签: r combinations combn

我有一个看起来像这样的数据框

 aa   bb      
 --------
 a    1   
 a    2   
 a    3   
 b    4       
 b    5    
 b    1    

我希望上面的数据框中有一对从' bb'中选取的元素。看起来像下面的框架

 aa   bb   cc   
 -------------
 a    1    2   
 a    1    3   
 a    2    3   
 b    4    5  
 b    4    1   
 b    5    1   

R输入代码

d1 <- read.table(header = TRUE, sep = ";", text = 
"aa;bb
 a;1   
 a;2   
 a;3   
 b;4       
 b;5    
 b;1"   )

3 个答案:

答案 0 :(得分:4)

使用@Ananda Mahto关于$(function() { var i = 1; $(".link_above").each(function(){ var link = $(this).parent().find('a').attr('href') $(this).html("<a href='"+link+"'>link"+i+"</a>") i++; }) }); 的慷慨评论,我们转换了&#39; data.frame&#39;到&#39; data.table&#39; (combn),按&#39; aa&#39;分组,我们得到&#39; bb&#39;的成对组合。 (setDT(d1)),从中提取行以创建&#39; bb&#39;和&#39; cc&#39;。

combn(bb,2)

答案 1 :(得分:3)

使用dplyr

library(dplyr)

d1 %>% group_by(aa) %>%
       do(data.frame(t(combn(.[["bb"]], 2))))

Source: local data frame [6 x 3]
Groups: aa [2]

                  aa    X1    X2
              (fctr) (dbl) (dbl)
1                  a     1     2
2                  a     1     3
3                  a     2     3
4                  b     4     5
5                  b     4     1
6                  b     5     1

答案 2 :(得分:2)

仅限R。

d2 <- t(do.call(cbind, tapply(d1$bb, d1$aa, function(x)combn(x, 2))))
rownames(d2) <- d1$aa
d2
#   [,1] [,2]
# a    1    2
# a    1    3
# a    2    3
# b    4    5
# b    4    1
# b    5    1