简体   繁体   English

如何将从graphml提取的数据转换为R中所需的多个列

[英]How to convert data extracted from graphml to desired multiple columns in R

I have a large data as graphml 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>

I import it in R using: 我使用以下命令将其导入R中:

  library(igraph)

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

Then convert it as data frame: 然后将其转换为数据帧:

  data_fram <- get.data.fram(My_graph)

Now I would like to read data as multiple columns, and store them in txt file, as: 现在,我想将数据读取为多列,并将其存储在txt文件中,如下所示:

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

I appreciate any help. 感谢您的帮助。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM