首頁  >  文章  >  後端開發  >  R語言XML格式資料匯入與處理 - ShangFR

R語言XML格式資料匯入與處理 - ShangFR

黄舟
黄舟原創
2017-02-25 13:59:562402瀏覽

資料解析

XML是一種可擴展標記語言,它被設計用來傳輸和儲存資料。 XML是各種應用程式之間進行資料傳輸的最常用的工具。它與Access,Oracle和SQL Server等資料庫不同,資料庫提供了更強有力的資料儲存和分析能力,例如:資料索引、排序、查找、相關一致性等,它只是儲存資料 。事實上它與其他數據表現形式最大的不同是:它極其簡單,這是一個看起來有點瑣細的優點,但正是這點使它與眾不同。

針對XML格式數據,R語言XML套件可以對其進行數據導入與處理,詳見下面的案例說明。

案例1

直接輸入一段標記語言文本,使用XML套件解析。

library(XML)

tt =
  &#39;<x>
<a>text</a>
<b foo="1"/>
<c bar="me">
<d>a phrase</d>
</c>
</x>&#39;
doc = xmlParse(tt)
xmlToList(doc)
# use an R-level node representation
doc = xmlTreeParse(tt)
xmlToList(doc)

案例2

匯入已有的xml格式資料並處理,本案例用到的是手機通訊錄xml數據,如下步驟操作:

#读取xml格式数据并解析
xmlfile=xmlParse(file.choose(),encoding="UTF-8") 
class(xmlfile)

#形成根目录列表数据
xmltop = xmlRoot(xmlfile) 
class(xmltop) #查看类
xmlName(xmltop) #查看根目录名
xmlSize(xmltop) #查看根目录总数
xmlName(xmltop[[1]]) #查看子目录名

# 查看第一个子目录
xmltop[[1]]
# 查看第二个子目录
xmltop[[2]]

#子目录节点
xmlSize(xmltop[[1]]) #子目录节点数
xmlSApply(xmltop[[1]], xmlName) #子目录节点名
xmlSApply(xmltop[[1]], xmlAttrs) #子目录节点属性
xmlSApply(xmltop[[1]], xmlSize) #子目录节点大小

#查看第一个子目录的第一个节点
xmltop[[1]][[1]]
#查看第一个子目录的第二个节点
xmltop[[1]][[2]]

#第二个子目录
xmltop[[2]][[1]]
xmltop[[2]][[2]]

xmltop[[1]][[3]][[1]][[1]] #查看联系人电话
xmltop[[&#39;Contact&#39;]][[&#39;PhoneList&#39;]][[1]][[1]]  #第二种方式
getNodeSet(xmltop, "//Contact/PhoneList")[[1]][[1]][[1]] #第三种方式

xmltop[[1]][[3]][[1]][[1]] = 13717232323 #更改联系人电话
xmltop[[1]][[1]][[1]]= "zhangsan "#更改联系人姓名

#保存
saveXML(xmltop, file="out.xml",encoding="UTF-8")

xml格式轉dataframe

依下列步驟操作:

xmlToDataFrame(xmlfile) #第一种方式,直接用xmlToDataFrame()函数

library("plyr") #第二种方式,数据格式处理专用包plyr

MyContact=ldply(xmlToList(file.choose()), data.frame) #先转成list,再转dataframe
View(MyContact)

# 查看联系方式
MyContact[,c("Name" ,"PhoneList.Phone.text")]

# 联系方式保存
write.csv(MyContact, "MyContact.csv", row.names=FALSE)

回饋與建議

以上就是R語言XML格式資料匯入與處理- ShangFR的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn