R - XML ​​- Dateien

XML ist ein Dateiformat, das sowohl das Dateiformat als auch die Daten im World Wide Web, in Intranets und anderswo unter Verwendung von Standard-ASCII-Text gemeinsam nutzt. Es steht für Extensible Markup Language (XML). Ähnlich wie HTML enthält es Markup-Tags. Im Gegensatz zu HTML, bei dem das Markup-Tag die Struktur der Seite beschreibt, beschreiben die Markup-Tags in XML die Bedeutung der in der Datei enthaltenen Daten.

Sie können eine XML-Datei in R mit dem Paket "XML" lesen. Dieses Paket kann mit dem folgenden Befehl installiert werden.

install.packages("XML")

Eingabedaten

Erstellen Sie eine XMl-Datei, indem Sie die folgenden Daten in einen Texteditor wie den Editor kopieren. Speichern Sie die Datei mit einem.xml Erweiterung und Auswahl des Dateityps als all files(*.*).

<RECORDS>
   <EMPLOYEE>
      <ID>1</ID>
      <NAME>Rick</NAME>
      <SALARY>623.3</SALARY>
      <STARTDATE>1/1/2012</STARTDATE>
      <DEPT>IT</DEPT>
   </EMPLOYEE>
	
   <EMPLOYEE>
      <ID>2</ID>
      <NAME>Dan</NAME>
      <SALARY>515.2</SALARY>
      <STARTDATE>9/23/2013</STARTDATE>
      <DEPT>Operations</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>3</ID>
      <NAME>Michelle</NAME>
      <SALARY>611</SALARY>
      <STARTDATE>11/15/2014</STARTDATE>
      <DEPT>IT</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>4</ID>
      <NAME>Ryan</NAME>
      <SALARY>729</SALARY>
      <STARTDATE>5/11/2014</STARTDATE>
      <DEPT>HR</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>5</ID>
      <NAME>Gary</NAME>
      <SALARY>843.25</SALARY>
      <STARTDATE>3/27/2015</STARTDATE>
      <DEPT>Finance</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>6</ID>
      <NAME>Nina</NAME>
      <SALARY>578</SALARY>
      <STARTDATE>5/21/2013</STARTDATE>
      <DEPT>IT</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>7</ID>
      <NAME>Simon</NAME>
      <SALARY>632.8</SALARY>
      <STARTDATE>7/30/2013</STARTDATE>
      <DEPT>Operations</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>8</ID>
      <NAME>Guru</NAME>
      <SALARY>722.5</SALARY>
      <STARTDATE>6/17/2014</STARTDATE>
      <DEPT>Finance</DEPT>
   </EMPLOYEE>
	
</RECORDS>

XML-Datei lesen

Die XML-Datei wird von R mit der Funktion gelesen xmlParse(). Es wird als Liste in R gespeichert.

# Load the package required to read XML files.
library("XML")

# Also load the other required package.
library("methods")

# Give the input file name to the function.
result <- xmlParse(file = "input.xml")

# Print the result.
print(result)

Wenn wir den obigen Code ausführen, wird das folgende Ergebnis erzeugt:

1
Rick
623.3
1/1/2012
IT

2
Dan
515.2
9/23/2013
Operations

3
Michelle
611
11/15/2014
IT

4
Ryan
729
5/11/2014
HR

5
Gary
843.25
3/27/2015
Finance

6
Nina
578
5/21/2013
IT

7
Simon
632.8
7/30/2013
Operations

8
Guru
722.5
6/17/2014
Finance

Anzahl der in der XML-Datei vorhandenen Knoten abrufen

# Load the packages required to read XML files.
library("XML")
library("methods")

# Give the input file name to the function.
result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.
rootnode <- xmlRoot(result)

# Find number of nodes in the root.
rootsize <- xmlSize(rootnode)

# Print the result.
print(rootsize)

Wenn wir den obigen Code ausführen, wird das folgende Ergebnis erzeugt:

output
[1] 8

Details zum ersten Knoten

Schauen wir uns den ersten Datensatz der analysierten Datei an. Es gibt uns eine Vorstellung von den verschiedenen Elementen, die im Knoten der obersten Ebene vorhanden sind.

# Load the packages required to read XML files.
library("XML")
library("methods")

# Give the input file name to the function.
result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.
rootnode <- xmlRoot(result)

# Print the result.
print(rootnode[1])

Wenn wir den obigen Code ausführen, wird das folgende Ergebnis erzeugt:

$EMPLOYEE
   1
   Rick
   623.3
   1/1/2012
   IT
 

attr(,"class")
[1] "XMLInternalNodeList" "XMLNodeList"

Holen Sie sich verschiedene Elemente eines Knotens

# Load the packages required to read XML files.
library("XML")
library("methods")

# Give the input file name to the function.
result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.
rootnode <- xmlRoot(result)

# Get the first element of the first node.
print(rootnode[[1]][[1]])

# Get the fifth element of the first node.
print(rootnode[[1]][[5]])

# Get the second element of the third node.
print(rootnode[[3]][[2]])

Wenn wir den obigen Code ausführen, wird das folgende Ergebnis erzeugt:

1 
IT 
Michelle

XML to Data Frame

Um die Daten in großen Dateien effektiv zu verarbeiten, lesen wir die Daten in der XML-Datei als Datenrahmen. Verarbeiten Sie dann den Datenrahmen für die Datenanalyse.

# Load the packages required to read XML files.
library("XML")
library("methods")

# Convert the input xml file to a data frame.
xmldataframe <- xmlToDataFrame("input.xml")
print(xmldataframe)

Wenn wir den obigen Code ausführen, wird das folgende Ergebnis erzeugt:

ID    NAME     SALARY    STARTDATE       DEPT 
1      1    Rick     623.30    2012-01-01      IT
2      2    Dan      515.20    2013-09-23      Operations
3      3    Michelle 611.00    2014-11-15      IT
4      4    Ryan     729.00    2014-05-11      HR
5     NA    Gary     843.25    2015-03-27      Finance
6      6    Nina     578.00    2013-05-21      IT
7      7    Simon    632.80    2013-07-30      Operations
8      8    Guru     722.50    2014-06-17      Finance

Da die Daten jetzt als Datenrahmen verfügbar sind, können wir die Datenrahmenfunktion zum Lesen und Bearbeiten der Datei verwenden.