2014-10-09 1 views
0

У меня есть большие данные как формат GraphML:Как преобразовать данные, извлеченные из GraphML до требуемых нескольких столбцов в R

<?xml version="1.0" encoding="UTF-8"?> 
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns 
http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd"> 

<!-- property keys --> 
    <key id="key1" for="node" attr.name="country" attr.type="string" /> 
    <key id="key2" for="node" attr.name="name" attr.type="string" /> 
    <key id="key3" for="node" attr.name="year" attr.type="int" /> 

    <graph id="G" edgedefault="undirected" parse.nodeids="canonical" 
    parse.edgeids="canonical" parse.order="nodesfirst"> 

    <!-- graph properties --> 

    <!-- vertices --> 
    <node id="n0"> 
    <data key="key1">USA</data> 
    <data key="key2">Walton </data> 
    <data key="key3">1990</data> 
    </node> 
    <node id="n1"> 
    <data key="key1">France</data> 
    <data key="key2">Nizan </data> 
    <data key="key3">2003</data> 
    </node> 
    <node id="n2"> 
    <data key="key1">UK</data> 
    <data key="key2">Peter</data> 
    <data key="key3">2008</data> 
    </node> 
    </graph> 
    </graphml> 

Я импортировать его в R с помощью:

library(igraph) 

My_graph <- read.graph("~/Desktop/data.xml", format="graphml") 

Затем преобразовать его в кадр данных:

data_fram <- get.data.fram(My_graph) 

Теперь я хотел бы прочитать данные в виде нескольких столбцов, и хранить их в текстовом файле, как:

ID  Country  Name  Year 
0  USA   Walton  1990 
1  France  Nizan  2003 
2  UK   Peter  2008 

Я ценю любую помощь.

ответ

1

Try:

df <- get.data.frame(My_graph, what='vertices') 
df$id <- as.numeric(gsub("[A-Za-z]+", "", df$id)) #if you need only the `numeric` part 
row.names(df) <- NULL 
df1 <- df[,c(4,1:3)] 
df1 
# id country name year 
#1 0  USA Walton 1990 
#2 1 France Nizan 2003 
#3 2  UK Peter 2008 
+0

Уважаемый akrun, спасибо за быстрый ответ. Да, это точно делает работу. – maz

+0

@maz, проблем нет. Рад, что это помогло. – akrun