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.