2014-10-09 71 views
0

我有一個大的數據作爲graphml格式:如何從graphml提取所需多列數據轉換中的R

library(igraph) 

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

然後將其轉換爲:

<?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中數據幀:

data_fram <- get.data.fram(My_graph) 

現在我想讀取數據的多列,並將它們,存儲在txt文件爲:

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

我很感激任何幫助。

回答

1

嘗試:

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 2014-10-09 04:52:18

+0

@maz,沒問題。很高興幫助。 – akrun 2014-10-09 06:59:37