我有这样的数据:

ID=c(rep("ID1",3), rep("ID2",2), "ID3", rep("ID4",2))
item=c("a","b","c","a","c","a","b","a")

data.frame(ID,item)

ID1 a
ID1 b
ID1 c
ID2 a
ID2 c
ID3 a
ID4 b
ID4 a

我将其作为这样的边列表:
a;b
b;c
a;c
a;c
b;a

来自ID1的前三个边缘,来自ID2,ID3的第四边缘没有边缘,因此没有边缘,来自ID4的第五边缘。关于如何做到这一点的任何想法?融化/类型转换?

最佳答案

尝试

 res <- do.call(rbind,with(df, tapply(item, ID,
         FUN=function(x) if(length(x)>=2) t(combn(x,2)))))
  paste(res[,1], res[,2], sep=";")
 #[1] "a;b" "a;c" "b;c" "a;c" "b;a"

关于r - 在R中创建边列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28393379/

10-12 19:10