我有一个看起来像这样的数据框
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" )
答案 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