R - XML ​​Dosyaları

XML, hem dosya biçimini hem de World Wide Web, intranetler ve diğer yerlerdeki verileri standart ASCII metni kullanarak paylaşan bir dosya biçimidir. Genişletilebilir İşaretleme Dili (XML) anlamına gelir. HTML'ye benzer şekilde, işaretleme etiketleri içerir. Ancak, biçimlendirme etiketinin sayfanın yapısını tanımladığı HTML'den farklı olarak, xml'de biçimlendirme etiketleri, dosyasında bulunan verilerin anlamını tanımlar.

"XML" paketini kullanarak R'deki bir xml dosyasını okuyabilirsiniz. Bu paket aşağıdaki komut kullanılarak kurulabilir.

install.packages("XML")

Giriş Verileri

Aşağıdaki verileri not defteri gibi bir metin düzenleyiciye kopyalayarak bir XMl dosyası oluşturun. Dosyayı bir.xml uzantısı ve dosya türünü seçme 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 Dosyasını Okuma

Xml dosyası, işlev kullanılarak R tarafından okunur xmlParse(). R'de bir liste olarak saklanır.

# 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)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

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

XML Dosyasında Bulunan Düğüm Sayısını Alın

# 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)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

output
[1] 8

İlk Düğümün Ayrıntıları

Ayrıştırılan dosyanın ilk kaydına bakalım. Bize en üst düzey düğümde bulunan çeşitli öğeler hakkında bir fikir verecektir.

# 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])

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

$EMPLOYEE
   1
   Rick
   623.3
   1/1/2012
   IT
 

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

Bir Düğümün Farklı Öğelerini Alın

# 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]])

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

1 
IT 
Michelle

Veri Çerçevesine XML

Verileri büyük dosyalarda etkili bir şekilde işlemek için xml dosyasındaki verileri bir veri çerçevesi olarak okuruz. Ardından veri analizi için veri çerçevesini işleyin.

# 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)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

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

Veriler artık bir veri çerçevesi olarak mevcut olduğundan, dosyayı okumak ve işlemek için veri çerçevesiyle ilgili işlevi kullanabiliriz.