R語言XML格式數據導入與處理

来源:http://www.cnblogs.com/shangfr/archive/2016/06/06/5564167.html
-Advertisement-
Play Games

XML是一種可擴展標記語言,它被設計用來傳輸和存儲數據。XML是各種應用程式之間進行數據傳輸的最常用的工具。它與Access,Oracle和SQL Server等資料庫不同,資料庫提供了更強有力的數據存儲和分析能力,例如:數據索引、排序、查找、相關一致性等,它僅僅是**存儲數據**。事實上它與其他數... ...


數據解析

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

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

案例1

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

library(XML)

tt =
  '<x>
<a>text</a>
<b foo="1"/>
<c bar="me">
<d>a phrase</d>
</c>
</x>'
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[['Contact']][['PhoneList']][[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)

反饋與建議


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在WEB系統中,列印的確是比較煩人的問題,如果我們能製作一個屬於自己的自定義的列印插件,那麼我們在後續自定義列印的時候能隨心所欲的控制列印,這樣的效果對於程式員來說是非常開心的一件事件,本文將自己開發編寫的C# 製作的HTML列印插件分享出來,讓有同樣需求的朋友提供一個參考;此插件是基於Micros ...
  • 基於Jenkins快速搭建持續集成環境.(Jenkins+tortoisesvn+MSBuild) ...
  • 在初級篇中,我們接觸了: 1.url 的簡單編寫 2.兩種傳參的方式 3.捕獲的參數總是字元串 4.為視圖設置預設參數 …… 在中級篇中將更進一步。 包含其它的URLconfs 當網站非常大的時候,將所有的url都寫在一個url模塊中會非常的臃腫,且後期不便於維護。此時,就可以使用包含的方式將部分的 ...
  • Java消息服務指的是兩個應用程式之間進行非同步通信的API,它為標準消息協議和消息服務提供了一組通用介面,包括創建、發送、讀取消息等,用於支持JAVA應用程式開發。在J2EE中,當兩個應用程式使用JMS進行通信時,它們之間並不是直接相連的,而是通過一個共同的消息收發服務連接起來,可以達到解耦的效果, ...
  • 1.>在servlet中,定義成員變數是不安全的,,因為,每次請求操作的是該同一個成員變數,,會出現線程不安全的問題. 2.>而在struts2中,在Action中定義成員變數是安全的,,因此每次請求,都會重新創建一個Action,因此每次請求處理 的面對的是不同的Action,因而不會出現線程不安 ...
  • 通過註解的方式實現一個簡單的HelloWorld。 一、新建項目 同SpringMVC_HelloWorld_01 不同的是springmvc配置文件的命名和路徑,此處為src/springmvc.xml 二、配置文件 1、配置web.xml 2、配置springmvc.xml 三、編寫Contro ...
  • 一. 安裝ant 1. 解壓apache-ant-1.9.4-bin到任意地方 2. 配置環境變數ANT_HOME為apache-ant-1.9.4-bin解壓後的目錄地址,如D:\Download\apache-ant-1.9.4 3. 在環境變數CLASSPATH中加入%ANT_HOME%\li ...
  • 通過註解的方式實現一個簡單的HelloWorld。 一、新建項目 同SpringMVC_HelloWorld_01 二、配置文件 1、配置web.xml 2、配置springmvc-servlet.xml 三、編寫Controller 四、新建jsp頁面 同SpringMVC_HelloWorld_ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...