如何从R中的矢量创建分组边列表

如何从R中的矢量创建分组边列表,r,igraph,R,Igraph,基本上,我想这样做,但有一个分组变量 例如,我有一个数据帧 data.frame(group = c(1, 1, 2, 2, 2), value = c("A", "B", "C", "D", "E", "F")) 我想按组将其转换为边缘列表: from to group A B 1 C D 2 D E 2 E F 2 请注意,没有B->C连接,因为它们位于不同的组中 有人知道我会怎么做吗?library

基本上,我想这样做,但有一个分组变量

例如,我有一个数据帧

data.frame(group = c(1, 1, 2, 2, 2), value = c("A", "B", "C", "D", "E", "F"))
我想按组将其转换为边缘列表:

from   to   group
A       B     1
C       D     2
D       E     2
E       F     2
请注意,没有
B->C
连接,因为它们位于不同的组中

有人知道我会怎么做吗?

library(tidyverse)
library(tidyverse)
df%>%
   group_by(group)%>%
   mutate(from = value, to = lead(value), value = NULL)%>%
   na.omit()

  group from  to   
  <dbl> <fct> <fct>
1     1 A     B    
2     2 C     D    
3     2 D     E    
4     2 E     F    
df%>% 分组依据(分组)%>% 变异(从=值,到=导程(值),值=空)%>% na.省略() 分组从到 1 A B 2 C D 三维E 4 2 E F
库(tidyverse)
df%>%
分组依据(分组)%>%
变异(从=值,到=导程(值),值=空)%>%
na.省略()
分组从到
1 A B
2 C D
三维E
4 2 E F

使用
数据表

library(data.table)
setDT(df1)[, .(from = value, to = shift(value, type = 'lead')), 
       by = .(group)][!is.na(to)]
#.   group from to
#1:     1    A  B
#2:     2    C  D
#3:     2    D  E
#4:     2    E  F

使用
数据表

library(data.table)
setDT(df1)[, .(from = value, to = shift(value, type = 'lead')), 
       by = .(group)][!is.na(to)]
#.   group from to
#1:     1    A  B
#2:     2    C  D
#3:     2    D  E
#4:     2    E  F