2014-10-06 2 views
1

Мои данные выглядит следующей матрицей:R: дерево с перекрывающихся строк

verkoop   V621 
verkoopcode  V62123 
verkoopcodenaam V6212355 
verkoopdatum  V621335 
verkoopdatumchar V62133526 
verkooppr  V6216 
verkoopprijs  V62162 
verkoopsafdeling V621213452 
verkoopsartikel V62126324 

Теперь я хочу, чтобы дерево в R следующим образом:

V621 --> V62123 --> V6212355 
     --> V621335 --> V62133526 
     --> V6216 --> V62162 
     --> V621213452 
     --> V62126324 

Или что-то подобное. Так что они рассматривают перекрывающиеся подстроки

ответ

2

Вы можете использовать функцию minimum.spanning.tree из пакета igraph, чтобы создать такое дерево.

# load data 
df <- read.table(text='verkoop   V621 
verkoopcode  V62123 
verkoopcodenaam V6212355 
verkoopdatum  V621335 
verkoopdatumchar V62133526 
verkooppr  V6216 
verkoopprijs  V62162 
verkoopsafdeling V621213452 
verkoopsartikel V62126324') 
# use igraph package 
require(igraph) 
# create adjacency matrix 
adj <- nchar(sapply(df$V1, gsub, x=df$V1, replacement='')) 
adj[!sapply(df$V1, grepl, x=df$V1)] <- 0 
# name adjecency matrix 
colnames(adj) <- df$V2 
# original graph 
gr <- graph.adjacency(adj, mode='directed', weighted=TRUE) 
# minimum spanning tree 
mst <- minimum.spanning.tree(gr) 
# e.g. for graphical representation 
plot(mst, vertex.size=40) 
Смежные вопросы